我试图抓取什么是h4文本
$regex = '/<h4>([A-Za-z0-9','.])/';
我只是得到第一个字母,我不知道如何使用*来保持抓取所有的第一个<的性格。>
我已经做了无数次尝试,但我知道我忽略了一些简单的事情。
所以我让它比我需要的要困难得多,下面的工作:
$regex = '/<h4>.*?<'/h4>/';
如果你相信抓取到第一个<
的所有字符是一个足够好的规则,那么使用这个:
$regex = '/<h4>([^<]*?)</';
当然,这个定义只会从<h4>The <b>Best</b> Book</h4>
中抓取'The '
,你可以将其更改为:
$regex = '/<h4>(.*?)<'/h4>/';
将抓取<h4>
和</h4>
之间的所有内容,但仍然不完美,因为像<h4 >
或<h4 style="...">
这样的任何东西都会破坏它,以及其他一百万个有效的 HTML示例。如果你知道内容不会有任何<
,但你知道你的标签将始终是<h4>
,第一个工作足够好,为您的情况。
如果您的情况更复杂,您将希望使用类似PHP的DOM扩展(DOMDocument),这意味着解析HTML和XML,因为这两种语言都不是常规语言,不能用正则表达式解析错误。
您可以使用下面的函数来完成此任务。
**function getTextBetweenTags($string, $tagname) {
$pattern = "/<$tagname ?.*>(.*)<'/$tagname>/";
preg_match($pattern, $string, $matches);
return $matches;
}**
在第一个参数中,您必须传递完整的字符串,在第二个参数中,您必须传递标记名("h4").