Проблема распечатки массива и индексов - консоль записывает все, выводит только последний

<?php
$selfClosing = explode(',', 'area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed');

$html = '
<p><a href="#">foo</a></p>
<hr/>
<br/>
<div>name</div>';

$dom = new DOMDocument();
$dom->loadHTML($html);
$els = $dom->getElementsByTagName('*');
foreach ( $els as $el ) {
    $nodeName = strtolower($el->nodeName);
    if ( !in_array( $nodeName, $selfClosing ) ) {
        var_dump( $nodeName );
    }
}

Выход:

string(4) "html"
string(4) "body"
string(1) "p"
string(1) "a"
string(3) "div"

В основном просто определяют имена узлов узлов, которые закрываются самостоятельно, загружают всю строку html в библиотеку DOM, захватывают все элементы, перебирают и отфильтровывают которые не закрываются и не работают на них.

Я уверен, что вы уже знаете, что вам не следует использовать регулярное выражение для этой цели.

1
задан Roman Skydan 17 January 2019 в 19:33
поделиться

1 ответ

Вам необходимо добавить деталь внутри цикла в innerHTML.

let array = [11, 22, 33, 44],
    result;

for (let value of array) {
    results = array.indexOf(value) + ':' + value;
    document.getElementById("answer").innerHTML += results + '<br>';
}
<p id="answer"></p>

Лучшей версией может быть сбор необходимой информации и присоединение новой строки из результатов.

let array = [11, 22, 33, 44];

document.getElementById("answer").innerHTML = array
    .map((v, i) => [i, v].join(':'))
    .join('<br>');
<p id="answer"></p>

0
ответ дан Nina Scholz 17 January 2019 в 19:33
поделиться
Другие вопросы по тегам:

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