Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 嵌套html标记的preg_匹配_Php_Regex_Nested_Preg Match - Fatal编程技术网

Php 嵌套html标记的preg_匹配

Php 嵌套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.'); 您需要有一个递归匹配模式: /<

我想通过php
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