不规则的DOM在PHP中解析

时间:2011-12-21 12:57:38

标签: php dom domparser

只有在HTML被完美标记时,php中的DOM解析才有效。我需要解析不是完美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

1 个答案:

答案 0 :(得分: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一起提供,您必须安装扩展程序才能使用这些功能