Цикл по DOMDocument

Я следую за предложением от этого вопроса Устойчивый, Сформировавшийся Синтаксический анализатор 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

21
задан Community 23 May 2017 в 11:54
поделиться

1 ответ

Попробуйте следующее:

$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);
        }
    }    
}
31
ответ дан 29 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: