Intereting Posts
Что такое хороший межпроцессный метод связи между C и PHP в Linux Как отключить проверку html5 для определенных кнопок в symfony 2.3 PHP / MySQL: динамический подготовленный оператор с запросом на вставку / обновление получать данные из бэкэнда в три столбца в одной строке Разбор RSS-ленты с использованием PHP для вставки в мой SQL-запрос Как запустить это регулярное выражение на PHP, которое анализирует полный адрес электронной почты с именем? Как работать с шаблонами Codeigniter? Разница между «включать» и «требовать» в php Есть ли что-то вроде Dwoo-s {with} или {loop} в Smarty 3 или раньше? Доктрина MongoDB найти по id Как передать объекты по ссылке в PHP 5? Как несериализировать данные сеанса в пользовательском обработчике Подключение двух таблиц – объединение строк за строкой PHP, как я могу проверить, является ли файл mp3 или файлом изображения? Получить изображение src из ответа ajax

Используя DOMDocument, можно ли получить все элементы, которые существуют в пределах определенной DOM?

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

Related of "Используя DOMDocument, можно ли получить все элементы, которые существуют в пределах определенной DOM?"

Вы можете передать звездочку * с getElementsByTagName() которая возвращает все элементы:

 foreach($dom->getElementsByTagName('*') as $element ){ } 

Из руководства :

имя
Локальное имя (без пространства имен) тега для соответствия. Специальное значение * соответствует всем тегам.