Я следую предложению из этого вопроса Надежный, Зрелый HTML-парсер для PHP , о синтаксическом анализе HTML, который может быть искажен при DOMDocument .
Есть ли простой способ перебрать проанализированный документ? Так что я хотел бы зациклить на HTML, как это.
$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;
}
И получить результаты примерно так.
ul:
li:value1
li:value2
li:value3
p:subvalue
p:hello world
Использование $doc->childNodes
само по себе не дает того, что я хочу. Так как он, кажется, не опускается на более низкие ветви дерева. Я использовал код, предложенный halfdan , и получил результаты, подобные этому.
html:
html:value1
value1
value3
subvalue
hello world