如果多行或单行,如何使preg_match_all找到匹配?

时间:2014-04-25 01:42:39

标签: php regex preg-match-all

我有这个正则表达式只有当字符串在多行

时才能正常工作
#\[link.*?href\=\"(.*)?\".*?title\=\"(.*?)\".*?class\=\"(.*?)\".*?\](.*?)\[\/link\]#e
如果第二个字符串在新行

匹配正常

[link href="somehref" title="sometitle" class="someclas"]Text[/link]
[link href="somehref" title="sometitle" class="someclas"]Text2[/link]
如果一切都在单行

,则

部分匹配最后一个

[link href="somehref" title="sometitle" class="someclas"]Text[/link][link href="somehref" title="sometitle" class="someclas"]Text2[/link]

如何使其匹配,多线或单线? 谢谢!

1 个答案:

答案 0 :(得分:1)

您的错误在href\=\"(.*)过于贪婪......已替换为href\=\"(.*?)

preg_match_all('%\[link.*?href="(.*?)?".*?title="(.*?)".*?class="(.*?)".*?\](.*?)\[\/link\]%i', $email, $result, PREG_PATTERN_ORDER);

http://regex101.com/r/lG7sQ6