Je suis la suggestion de cette question Robust, Mature HTML Parser for PHP, à propos de l'analyse du code HTML qui peut être malformé avec DOMDocument.Boucle sur DOMDocument
Y a-t-il un moyen facile de faire une boucle sur le document analysé? Donc, je voudrais boucler sur html comme ça.
$html='<ul>
<li>value1</li>
<li>value1</li>
<li>value3
<p>subvalue</p>
</li>
</ul>
<p>hello world</p>';
$doc = new DOMDocument();
$doc->loadHTML($html);
???
foreach (??? as $node)
{
print $node->nodeName.':'.$node->nodeValue;
}
Et obtenir des résultats un peu comme ça.
ul:
li:value1
li:value2
li:value3
p:subvalue
p:hello world
L'utilisation de $doc->childNodes
en lui-même ne fait pas vraiment ce que je veux. Comme il ne semble pas descendre aux branches inférieures de l'arbre. J'ai utilisé le code proposé par halfdan et je reçois des résultats comme celui-ci.
html:
html:value1
value1
value3
subvalue
hello world
Les objets DOM peuvent (mais pas toujours) avoir une propriété appelée $ childNodes que vous pouvez parcourir. Vous pouvez vérifier la présence ou non de cette propriété avec la méthode hasChildNodes(). – GordonM