preg 在 html 标记之间匹配 php 中的文本

2022-08-30 17:21:12

您好,我想在PHP中使用preg_match从html文档中解析出以下内容中的“所需文本”

<p class="review"> Desired text </p>

通常,我会使用simple_html_dom来表示此类事情,但在这种情况下,它不能被使用(上述元素不会出现在每个所需的div标签中,因此我被迫使用这种方法来跟踪它何时没有出现,然后相应地从simple_html_dom调整我的数组)。

无论如何,这将解决我的问题。

非常感谢。


答案 1
preg_match("'<p class=\"review\">(.*?)</p>'si", $source, $match);
if($match) echo "result=".$match[1];

答案 2

如果要返回多个匹配项,则需要使用preg_match_all()。然后,循环遍历第二个结果组 ($match[1]),仅获取标记之间的内容。

$source = "<p class=\"review\"> Desired text1 </p>".
"<p class=\"review\"> Desired text2 </p>".
"<p class=\"review\"> Desired text3 </p>";


    preg_match_all("'<p class=\"review\">(.*?)</p>'si", $source, $match);

    foreach($match[1] as $val)
    {
        echo $val."<br>";


    }

Outputs:

Desired text1
Desired text2
Desired text3 

推荐