如何忽略preg_match中的不同组合

时间:2014-11-20 21:26:50

标签: php preg-match match

例如,让我们看一下这个例子:

target="_blank">EXTRACT THIS</a>

我想提取那个超链接的文本。我使用以下代码:

preg_match("/target=\"_blank\">(.*)<\/a>/", $content, $result);

问题在于可能存在重叠组合,如:

<a href="LINK" target="_blank">TEXT</a> <a href="LINK_2" target="_blank">TEXT_2</a> 

并且此规则也将返回:

TEXT</a> <a href="LINK_2" target="_blank">TEXT_2

我显然不想要。

问题是:如何避免提取这些重叠?

1 个答案:

答案 0 :(得分:2)

问题在于您的RE:

(.*)

说抓住一切。 。*被称为贪婪,并将抓住它所能做的一切 有两种解决方案。

一:

(.*?)   

。*

的非贪婪行动

二:

([^<]*)

简单地匹配任何不是&lt;字符。这比。*?