<?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, захватывают все элементы, перебирают и отфильтровывают которые не закрываются и не работают на них.
Я уверен, что вы уже знаете, что вам не следует использовать регулярное выражение для этой цели.
Вам необходимо добавить деталь внутри цикла в 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>