Введение
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 обратитесь к следующим ресурсам:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3