preg_match用于嵌套的html标记
-
07-07-2019 - |
题
我想要抓住所有<!>“dev <!>”;标签及其各自的内容,通过php preg_match_all()
但无法获得嵌套的。
数据:强>
<dev>aaa</dev>
<dev>bbb</dev>
<dev>
ccc
<dev>ddd</dev>
</dev>
我的表达:
|<dev>(.*)</dev>|Uis
谢谢你的帮助, 湾
解决方案
Don <!>#8217;使用正则表达式进行解析。使用真正的解析器,如 DOMDocument 或 SimpleXML :
$xml = simplexml_load_string('<root>'.$str.'</root>');
其他提示
您需要具有递归匹配模式:
/<dev>(.*|(?R))<\/dev>/i
这只会吸收任何嵌套元素,所以如果你想解析那些,你将不得不再次在$ matches [1]上运行该函数
*
是一个贪婪的运算符,消耗尽可能多的字符。您应该使用*?
非贪婪版本来查找尽可能小的匹配项。也许正则表达式不是最好的工具。
不隶属于 StackOverflow