0

すべての「dev」タグとそれぞれのコンテンツをphpでキャッチしたいのですpreg_match_all()が、ネストされたタグを取得できません。

データ:

<dev>aaa</dev> <dev>bbb</dev> <dev> ccc <dev>ddd</dev> </dev>

これまでの私の表現:

|<dev>(.*)</dev>|Uis

助けてくれてありがとう、b。

4

3 に答える 3

7

解析に正規表現を使用しないでください。DOMDocumentSimpleXMLのような実際のパーサーを使用します。

$xml = simplexml_load_string('<root>'.$str.'</root>');
于 2009-09-14T16:31:04.557 に答える
1

再帰的なマッチングパターンが必要です。

/<dev>(.*|(?R))<\/dev>/i

これにより、ネストされた要素がすべて吸い取られるため、それらを解析する場合は、$matches[1]で関数を再度実行する必要があります。

于 2010-01-26T14:29:51.783 に答える
-1

*貪欲な演算子であり、できるだけ多くの文字を消費します。代わりに、貪欲でないバージョンを使用*?して、可能な限り最小の一致を見つける必要があります。たぶん、正規表現はこれを行うための最良のツールではありません。

于 2009-09-14T16:21:31.890 に答える