Манипуляции с DOM в PHP

Я ищу хорошие методы управления HTML в PHP. Например, проблема, с которой я сейчас сталкиваюсь, связана с искаженным HTML.

Я получаю данные, которые выглядят примерно так:

<div>This is some <b>text

Как вы заметили, в HTML отсутствуют закрывающие теги. Я мог бы использовать регулярное выражение или XML-парсер для решения этой проблемы. Однако вполне вероятно, что в будущем мне придется проделать другие манипуляции с DOM. Интересно, есть ли какие-нибудь хорошие библиотеки PHP, которые обрабатывают манипуляции с DOM, аналогично тому, как Javascript обрабатывает манипуляции с DOM.

Я бы запустил искаженный HTML-код через HTML Purifier, прежде чем делать с ним что-нибудь еще.

TRiG 02.11.2010 18:15
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
9
1
8 500
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

В PHP есть расширение PECL, которое дает вам доступ к функциям HTML Tidy. Tidy - довольно мощная библиотека, которая должна уметь разумно брать подобный код и закрывать теги.

Я использую его для очистки искаженных XML и HTML, отправленных мне системой классифицированных объявлений перед импортом.

Я думаю, что для управления DOM вы ищете это. Я использовал для синтаксического анализа HTML-документов из Интернета, и у меня это сработало.

Я считаю PHP Simple HTML DOM самой полезной и простой библиотекой. Лучше, чем PECL, я бы сказал.

Я написал статью о как использовать его, чтобы очистить даты турне артиста myspace (просто пример.) Вот ссылка на php простой парсер html dom.

Встроенная библиотека DOM может легко решить эту проблему. Метод loadHTML принимает искаженный XML, а метод load - нет.

$d = new DOMDocument;
$d->loadHTML('<div>This is some <b>text');
$d->saveHTML();

Результат будет:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
  <body>
    <div>This is some <b>text</b></div>
  </body>
</html>

Я ввел аналогичный ответ, но немного подробнее о кодировке строк и о том, как извлечь фрагмент документа здесь

Kevin Newman 04.04.2017 19:38

Другие вопросы по теме