Estoy siguiendo la sugerencia de esta pregunta Robust, Mature HTML Parser for PHP, sobre el análisis de html que puede estar mal formado con DOMDocument.Loop sobre DOMDocument
¿Hay alguna manera fácil de recorrer el documento analizado? Así que me gustaría hacer un bucle sobre html como este.
$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;
}
Y obtenga resultados algo como esto.
ul:
li:value1
li:value2
li:value3
p:subvalue
p:hello world
Usando $doc->childNodes
por sí mismo en realidad no hago lo que quiero. Ya que no parece bajar a ramas inferiores en el árbol. Usé el código sugerido por halfdan y obtengo resultados como este.
html:
html:value1
value1
value3
subvalue
hello world
Los objetos DOM pueden tener (pero no siempre) una propiedad llamada $ childNodes sobre la que puede iterar. Puede verificar la presencia o no de esta propiedad con el método hasChildNodes(). – GordonM