2

php 中的 DOM 解析仅在 HTML 被完美标记的情况下才有效。我需要解析不是完美 DOM 的 html。而且那个 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

4

1 回答 1

4

诸如此类的工具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,您必须安装扩展才能使用这些功能

于 2011-12-21T13:02:19.523 回答