Я следую за предложением от этого вопроса Устойчивый, Сформировавшийся Синтаксический анализатор HTML для PHP о парсинге HTML, который может быть уродливым с DOMDocument.
Там какой-либо простой способ состоит в том, чтобы циклично выполниться по проанализированному документу? Таким образом, я хотел бы циклично выполниться по HTML как это.
$html='
- value1
- value1
- value3
subvalue
hello world
';
$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
Попробуйте следующее:
$doc = new DOMDocument();
$doc->loadHTML($html);
showDOMNode($doc);
function showDOMNode(DOMNode $domNode) {
foreach ($domNode->childNodes as $node)
{
print $node->nodeName.':'.$node->nodeValue;
if($node->hasChildNodes()) {
showDOMNode($node);
}
}
}