我有这段代码:
$strhtml = file_get_contents('05001400300320100033100.html');
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById('upPanelActuciones');
print $dochtml->saveXml($elm);
我收到这个警告:
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: error parsing attribute name in Entity, line: 674 in C:\AppServ\www\video01\sector2\dom3.php on line 10
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Opening and ending tag mismatch: div and td in Entity, line: 1019 in C:\AppServ\www\video01\sector2\dom3.php on line 10
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Opening and ending tag mismatch: div and td in Entity, line: 1020 in C:\AppServ\www\video01\sector2\dom3.php on line 10
Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Opening and ending tag mismatch: div and td in Entity, line: 1022 in C:\AppServ\www\video01\sector2\dom3.php on line 10
我无法操纵html(我知道html文件有错误)所以有办法删除这个警告吗? (没有显示)。
提前感谢您的帮助。
答案 0 :(得分:12)
DOMDocument非常善于处理不完美的标记,但它 它会在整个地方发出警告。
这里没有详细记录。解决方案是实现 处理这些错误的单独的aparatus。
在调用loadHTML之前设置libxml_use_internal_errors(true)。这个 将防止错误冒泡到您的默认错误处理程序。 然后你可以使用其他libxml错误来获取它们(如果你愿意) 功能。
您可以在此处找到更多信息 http://www.php.net/manual/en/ref.libxml.php
处理DOMDocument错误的正确方法是:
<?php
// enable user error handling
var_dump(libxml_use_internal_errors(true));
// load the document
$doc = new DOMDocument;
if (!$doc->load('file.xml')) {
foreach (libxml_get_errors() as $error) {
// handle errors here
}
libxml_clear_errors();
}
?>