Php 如果多行或单行,如何使preg_匹配\u all查找匹配?

Php 如果多行或单行,如何使preg_匹配\u all查找匹配?,php,regex,preg-match-all,Php,Regex,Preg Match All,我有一个正则表达式,它只有在字符串位于多行上时才能正常工作 #\[link.*?href\=\"(.*)?\".*?title\=\"(.*?)\".*?class\=\"(.*?)\".*?\](.*?)\[\/link\]#e 如果第二个字符串位于新行,则匹配ok [link href="somehref" title="sometitle" class="someclas&quo

我有一个正则表达式,它只有在字符串位于多行上时才能正常工作

#\[link.*?href\=\"(.*)?\".*?title\=\"(.*?)\".*?class\=\"(.*?)\".*?\](.*?)\[\/link\]#e
如果第二个字符串位于新行,则匹配ok

[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]

如何使其匹配,多行还是单行?

您的错误在这里
href\=\”(.*)
太贪婪了…替换为
href\=\”(.*)


O男孩!很好的发现,早上4点在这里,什么都看不见。大约有10个要匹配。非常感谢你@本3点在这里。。。很乐意帮忙!晚安……工作;)问号没有丢失,它在错误的地方。也就是说,
(.*)
应该是
(.*)
preg_match_all('%\[link.*?href="(.*?)?".*?title="(.*?)".*?class="(.*?)".*?\](.*?)\[\/link\]%i', $email, $result, PREG_PATTERN_ORDER);