«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как сохранить HTML-теги при извлечении узлов с помощью PHP DOMDocument?

Как сохранить HTML-теги при извлечении узлов с помощью PHP DOMDocument?

Опубликовано 22 декабря 2024 г.
Просматривать:525

How Can I Preserve HTML Tags When Extracting Nodes Using PHP's DOMDocument?

Проблемы с извлечением узлов HTML с использованием DOMDocument

Введение

DOMDocument, класс PHP, предлагает удобный подход для анализа и манипулирование HTML-документами. Однако при попытке сохранить HTML-теги при извлечении контента пользователи могут столкнуться с трудностями. В этой статье рассматривается основная концепция DOM и предлагаются решения для решения этой проблемы.

Понимание DOM и узлов

DOMDocument представляет HTML-документы в виде иерархических деревьев узлов. Каждый узел может иметь дочерние узлы, образуя сложную структуру. Крайне важно понимать, что все элементы HTML вместе с их атрибутами и текстовым содержимым представлены в виде узлов в DOMDocument.

Решение проблемы сохранения тегов

Предоставленное код успешно извлекает узел DIV с идентификатором «showContent». Однако он извлекает только текстовое содержимое внутри DIV, исключая сами теги HTML. Это связано с тем, что в коде используется $tag->nodeValue, который извлекает только текст, а не сами узлы.

Решение: обход узлов

Чтобы сохранить узлы HTML, вам необходимо пройти через дочерние узлы вашего целевого узла. Код ниже демонстрирует этот подход:

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
    echo $dom->saveXML($tag);
    echo '
'; }

Получение конкретной информации из HTML

Если вам требуется конкретная информация из HTML-документа, например ссылки из таблицы, вы можете изменить запрос XPath, чтобы выбрать соответствующие узлы. Например:

foreach ($div->getElementsByTagName('a') as $link) {
    echo $dom->saveXML($link);
}

Дополнительные ресурсы

Для получения дополнительной помощи по работе с DOMDocument обратитесь к следующим ресурсам:

  • [Документация DOMDocument](https ://www.php.net/manual/en/class.domdocument.php)
  • [Вопросы и ответы на DOMDocument в переполнении стека](https://stackoverflow.com/search?q=user:208809 DOM)
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3