Нерегулярный парсинг DOM в php - PullRequest
2 голосов
/ 21 декабря 2011

Разбор DOM в php работает, только если HTML отлично помечен.Мне нужно разобрать HTML, который не является идеальным DOM.И этот HTML с удаленного сервера, поэтому я не могу его изменить.

<html>
 <body>
  <table>
   <tr>
    <td>
    1
    </td>
    <td>
    2
    </td></td>
   </tr>
</table>

, когда я анализирую html с этой структурой, это выдает ошибку.Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : td in Entity, line: 173 in C:\wamp\wwwxxxxxx on line 51

1 Ответ

4 голосов
/ 21 декабря 2011

Такие инструменты, как tidy должны иметь возможность восстанавливать HTML, чтобы вы могли использовать его в DOM.

$html = "<html>
 <body>
  <table>
   <tr>
    <td>
    1
    </td>
    <td>
    2
    </td></td>
   </tr>
</table>";

$tidy = tidy_parse_string($html);

$html = $tidy->html();
$cleanHTML = $html->value;
$doc = new DomDocument();
$doc-> loadhtml($cleanHTML);

Примечание: Tidy не поставляется с PHP, вам нужно установить расширение, чтобы использовать функции

...