Question

Je voudrais attraper tous les & "; dev &"; balises et leur contenu respectif, via php preg_match_all() mais ne peuvent pas obtenir les imbriquées.

données:

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

mon expression jusqu'à présent:

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

merci pour votre aide, b.

Était-ce utile?

La solution

Ne pas & # 8217; ne pas utiliser d’expressions régulières pour l’analyse. Utilisez un analyseur syntaxique réel comme DOMDocument ou SimpleXML :

$xml = simplexml_load_string('<root>'.$str.'</root>');

Autres conseils

Vous devez avoir un motif de correspondance récursif:

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

Cela va juste aspirer tous les éléments imbriqués, donc si vous voulez ensuite les analyser, vous devrez relancer la fonction sur $ matches [1]

Le * est un opérateur glouton, qui utilise le plus de caractères possible. Utilisez plutôt la version *? non-gloutonne pour trouver les correspondances les plus petites possibles. Les regex ne sont peut-être pas les meilleurs outils pour le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top