PHP Regex用于h4标签之间的信息


PHP Regex for information between h4 tags

我试图抓取什么是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").