Вопрос

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

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

<div>This is some <b>text

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

Это было полезно?

Решение

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

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

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

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

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

Встроенная библиотека 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>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top