2011-12-21 80 views
2

仅在HTML完美标记时,才能在php中使用DOM解析。我需要解析的HTML不是一个完美的DOM。而且这个HTML来自远程服务器,所以我不能改变它。php中的不规则DOM解析

<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

诸如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); 

注:整齐不随PHP,你就必须安装扩展使用功能