【发布时间】:2013-07-22 16:24:23
【问题描述】:
我试图在以下数据上使用 preg_match_all
$data = " .........data
<p class='need'>
...........data
</p>
<p class='need'>
...........data
</p>
<p class='need'></p>
<p class='need'>
...........data
</p>
<p class='need'></p>
";
preg_match_all("/.*?<p class=\"need\">(.*?)<\/p>/si",$data, $tmp);
上面返回所有存在数据的结果,但我希望在 $tmp 中包含一个空数据,这样我就得到了所有 5 个结果,但没有找到任何数据,而不是得到 3 个结果...
感谢任何帮助:)
【问题讨论】:
-
简单解决方案:停止在 HTML 上使用正则表达式。改用 DOM。然后就是一些 xpath 的简单问题:
$found = $xpath->query("//p[@class='need']"); -
我同意 Marc B 的观点,但我不明白您为什么会遇到问题,因为 $tmp[1] 包含一个具有 NULL 值的数组,其中没有找到数据。因此,鉴于每个键都存在这一事实,您可以遍历数组并测试 NULL 值。换句话说,您将获得 5 个结果。其中 2 个是空的。
标签: php regex preg-match preg-match-all