您好我想在PHP中使用preg_match来解析html文档中的“Desired text”
<p class="review"> Desired text </p>
通常我会使用simple_html_dom这样的东西但是在这种情况下它不能被使用(上面的元素没有出现在每个所需的div标签中,因此我不得不使用这种方法来准确地跟踪它的确切时间。 t出现然后相应地从simple_html_dom调整我的数组。)
无论如何,这可以解决我的问题。
非常感谢。
答案 0 :(得分:65)
preg_match("'<p class=\"review\">(.*?)</p>'si", $source, $match);
if($match) echo "result=".$match[1];
答案 1 :(得分:11)
如果要返回多个匹配项,则需要使用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
答案 2 :(得分:7)
如果您匹配的字符串有多行并且是:
,该怎么办?<p class="review"> Desired text1 </p>
<p class="review"> Desired text2 </p>
<p class="review"> Desired text3 </p>
该模式将匹配一次,匹配将是字符串中的所有内容。
我认为更好的模式是:
"'<p class=\"review\">([^<]*)</p>'si"