Sto seguendo il suggerimento di questa domanda Robusto, Mature HTML Parser for PHP, sull'analisi di html che potrebbe non essere corretto con DOMDocument.Loop over DOMDocument
Esiste un modo semplice per eseguire il loop del documento analizzato? Quindi mi piacerebbe eseguire il loop su html come questo.
$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;
}
E ottenere risultati in questo modo.
ul:
li:value1
li:value2
li:value3
p:subvalue
p:hello world
Utilizzando $doc->childNodes
di per sé in realtà non fare quello che voglio. Dal momento che non sembra scendere ai rami più bassi nell'albero. Ho usato il codice suggerito da halfdan e ottengo risultati come questo.
html:
html:value1
value1
value3
subvalue
hello world
Gli oggetti DOM possono (ma non sempre) avere una proprietà chiamata $ childNode su cui è possibile scorrere. È possibile verificare la presenza o meno di questa proprietà con il metodo hasChildNodes(). – GordonM