Манипулирование DOM в PHP - PullRequest
       39

Манипулирование DOM в PHP

9 голосов
/ 26 августа 2008

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

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

<div>This is some <b>text

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

Ответы [ 4 ]

11 голосов
/ 26 августа 2008

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

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

6 голосов
/ 02 февраля 2009

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

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

3 голосов
/ 29 ноября 2010

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

$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>
1 голос
/ 26 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...