我有这个正则表达式只有当字符串在多行
时才能正常工作#\[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]
如何使其匹配,多线或单线? 谢谢!
答案 0 :(得分:1)
您的错误在href\=\"(.*)
过于贪婪......已替换为href\=\"(.*?)
preg_match_all('%\[link.*?href="(.*?)?".*?title="(.*?)".*?class="(.*?)".*?\](.*?)\[\/link\]%i', $email, $result, PREG_PATTERN_ORDER);