Domanda

Vorrei prendere tutte le " dev " tag e i rispettivi contenuti, tramite php preg_match_all() ma non riescono a ottenere quelli nidificati.

Dati:

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

la mia espressione finora:

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

grazie, per il tuo aiuto, b.

È stato utile?

Soluzione

Don & # 8217; t usa espressioni regolari per l'analisi. Usa un vero parser come DOMDocument o SimpleXML :

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

Altri suggerimenti

È necessario disporre di un modello di corrispondenza ricorsivo:

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

Questo risuccherà semplicemente tutti gli elementi nidificati, quindi se vuoi analizzarli, dovrai eseguire di nuovo la funzione su $ corrispondenze [1]

* è un operatore avido, consuma il maggior numero di caratteri possibile. Dovresti invece utilizzare la versione *? non avida per trovare le corrispondenze più piccole possibili. Forse le regex non sono gli strumenti migliori per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top