例如,让我们看一下这个例子:
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
我显然不想要。
问题是:如何避免提取这些重叠?
答案 0 :(得分:2)
问题在于您的RE:
(.*)
说抓住一切。 。*被称为贪婪,并将抓住它所能做的一切 有两种解决方案。
一:
(.*?)
。*
的非贪婪行动二:
([^<]*)
简单地匹配任何不是&lt;字符。这比。*?
快