ネストされたhtmlタグのpreg_match
-
07-07-2019 - |
質問
すべての<!> quot; dev <!> quot;をキャッチしたいタグとそれぞれのコンテンツ、php preg_match_all()
を使用しますが、ネストされたタグは取得できません。
データ:
<dev>aaa</dev>
<dev>bbb</dev>
<dev>
ccc
<dev>ddd</dev>
</dev>
これまでの私の表現:
|<dev>(.*)</dev>|Uis
ご協力ありがとうございます。 b。
解決
Don <!>#8217; t解析に正規表現を使用します。 DOMDocument または SimpleXML :
$xml = simplexml_load_string('<root>'.$str.'</root>');
他のヒント
再帰的な一致パターンが必要です:
/<dev>(.*|(?R))<\/dev>/i
それはネストされた要素を吸い上げるだけなので、それらを解析する場合は、$ matches [1]で関数を再度実行する必要があります
*
は貪欲な演算子で、できるだけ多くの文字を消費します。代わりに、最短マッチを見つけるために、貪欲でないバージョン*?
を使用する必要があります。おそらく正規表現はこれを行うのに最適なツールではありません。
所属していません StackOverflow