preg_match per tag html nidificati
-
07-07-2019 - |
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.
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.