Предположим, у меня есть HTML-файл с множеством разных элементов, каждый из которых имеет разные атрибуты. Скажем, я не знаю заранее, как будет выглядеть этот HTML-код.
Используя DOMDocument PHP, как я могу перебирать все элементы и изменять их? Все, что я вижу, это getElementByTagName и getElementById и т. Д. Я хочу перебирать все элементы.
Например. Скажем, HTML выглядит так (просто пример, на самом деле я не знаю структуру):
$html = '<div class="potato"><span></span></div>';
Я хочу иметь возможность простую модификацию DOM (например, в Javascript):
$dom = new DOMDocument(); $dom->loadHTML($html); // Obviously the code below doesn't work but showcases what I want to achieve foreach($dom->getAllElements as $element ){ if(!$element->hasClass('potato')){ $element->addClass('potato'); } else{ $element->removeClass('potato'); } } $html = $dom->SaveHTML();
Поэтому в этом случае я хотел бы, чтобы полученный html выглядел так:
$html = '<div><span class="potato"></span></div>';
Итак, как я могу перебирать все элементы и выполнять модификации «на лету» в цикле foreach? Я действительно не хочу использовать регулярное выражение для этого.
Вы можете передать звездочку *
с getElementsByTagName()
которая возвращает все элементы:
foreach($dom->getElementsByTagName('*') as $element ){ }
Из руководства :
имя
Локальное имя (без пространства имен) тега для соответствия. Специальное значение * соответствует всем тегам.