Разбор DOM для многомерного массива Переполнение стека

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

<for model="customer" id="0" processed="0">

<tag model="customer" value="name">name</tag>

<for model="accounts_receivable" processed="0">

<p>This is inside accounts_receivable</p>

</for>

</for>

0

Решение

Я написал функцию, делающую это для узлов тега for. Он игнорирует все остальные узлы, но рекурсивно анализирует полный DOM для всех узлов тега for.

$doc->loadHTML($this->template, LIBXML_NOWARNING | LIBXML_NOERROR);

$elements = $doc->getElementsByTagName('for');

$array = [];

if (!is_null($elements)) {
foreach ($elements as $element) {
if($element->getAttribute("processed") == false || $element->getAttribute("processed") != 1){
array_push($array, $this->parseDomChild($element));
}

}
}

function parseDomChild($element) {

$array = [];

if(isset($element->tagName) && $element->tagName == 'for') {

$array['nodeSelf'] = $element;
$element->setAttribute("processed", 1);

}

if($element->hasChildNodes()) {

$array['nodesChild'] = [];

foreach($element->childNodes as $node) {

array_push($array['nodesChild'], $this->parseDomChild($node));

}

}

return $array;

}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector