[英]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.