Эта функция преобразует HTML в дерево узлов (<ul>
структура). Тем не менее, каждый узел возвращается как дочерний узел предыдущего узла , даже , если этот узел был родственным узлом текущего узла.
$xml = '
<div>
<div>
<b></b>
</div>
<p></p>
</div>
';
function xml2array($xml,&$result = '') {
foreach($xml->children() as $name => $xmlchild) {
xml2array($xmlchild, $result);
}
$result = "<ul><li>".$xml->getName().$result."</li></ul>";
}
$result='';
$dd = xml2array(simplexml_load_string($xml), $result);
echo "<pre>";
print_r($result);
приведенный выше код возвращает это:
<ul>
<li>div
<ul>
<li>p
<ul>
<li>div
<ul>
<li>b</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
вы заметили, что div теперь является потомком p, даже если они являются братьями и сестрами, а div имеет после 'p' в отличие от исходного ввода.
вот так это должно выглядеть:
<ul>
<li>div
<ul>
<li>div
<ul>b</ul>
</li>
<li>p</li>
</ul>
</li>
</ul>