我想要抓住所有<!>“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]上运行该函数

*是一个贪婪的运算符,消耗尽可能多的字符。您应该使用*?非贪婪版本来查找尽可能小的匹配项。也许正则表达式不是最好的工具。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top