[英]preg_match for nested html tags
我想通过php preg_match_all()
捕获所有“ dev”标签及其各自的内容,但无法获取嵌套的标签。
数据:
<dev>aaa</dev>
<dev>bbb</dev>
<dev>
ccc
<dev>ddd</dev>
</dev>
到目前为止我的表情:
|<dev>(.*)</dev>|Uis
谢谢您的帮助; b。
不要使用正则表达式进行解析。 使用真正的解析器,例如DOMDocument或SimpleXML :
$xml = simplexml_load_string('<root>'.$str.'</root>');
您需要具有递归匹配模式:
/<dev>(.*|(?R))<\/dev>/i
那只会吸收任何嵌套的元素,因此,如果您想对其进行解析,则必须在$ matches [1]上再次运行该函数。
*
是贪婪的运算符,它消耗尽可能多的字符。 您应该使用*?
非贪婪版本,而是查找可能的最小匹配项。 也许正则表达式不是执行此操作的最佳工具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.