Php 嵌套html标记的preg_匹配
我想通过phpPhp 嵌套html标记的preg_匹配,php,regex,nested,preg-match,Php,Regex,Nested,Preg Match,我想通过phppreg\u match\u all()捕获所有“dev”标记及其各自的内容,但无法获取嵌套的标记 数据: aaa bbb ccc ddd 我目前的表情: |(.*)用户界面 谢谢你的帮助, b、 这个*是一个贪婪的操作符,消耗尽可能多的字符。您应该使用*?非贪婪版本来查找尽可能小的匹配项。也许正则表达式不是最好的工具。不要使用正则表达式进行解析。使用真正的解析器,如或: $xml=simplexml_load_字符串('.$str.'); 您需要有一个递归匹配模式: /<
preg\u match\u all()
捕获所有“dev”标记及其各自的内容,但无法获取嵌套的标记
数据:
aaa
bbb
ccc
ddd
我目前的表情:
|(.*)用户界面
谢谢你的帮助,
b、 这个
*
是一个贪婪的操作符,消耗尽可能多的字符。您应该使用*?
非贪婪版本来查找尽可能小的匹配项。也许正则表达式不是最好的工具。不要使用正则表达式进行解析。使用真正的解析器,如或:
$xml=simplexml_load_字符串('.$str.');
您需要有一个递归匹配模式:
/<dev>(.*|(?R))<\/dev>/i
/(.*R))/i
这只会占用任何嵌套元素,因此如果您想随后解析这些元素,则必须在$matches[1]上再次运行该函数。不要使用正则表达式进行解析。用一个真正的解析器来代替。好吧,如果s?他想解析一种常规语言,那应该没问题。但总的来说,是的。尤其是HTML/XML等。绝对可能重复。上还有其他几个示例,您应该使用/或#作为preg分隔符,|(pipe)字符用于交替匹配
/<dev>(.*|(?R))<\/dev>/i