使用PHPDOMDocument-> loadHTML加载html时,使用LIBXML_NOWARNING选项标志不会停止.其他常量确实有效.
在下面的示例中,我添加了LIBXML_HTML_NODEFDTD以证明已接收到常量(停止添加doctype).
$doc=new DOMDocument();
$doc->loadHTML("<tagthatdoesnotexist><h1>Hi</h1></tagthatdoesnotexist>",LIBXML_NOERROR | LIBXML_NOWARNING | LIBXML_HTML_NODEFDTD);
echo $doc->saveHTML();
Run Code Online (Sandbox Code Playgroud)
但是,仍会生成警告并输出.我错过了什么?
忽略该LIBXML_NOWARNING选项是DOMDocument::loadHTML()PHP中的一个缺陷(并且要修复).它最近出现在一个相关问题"libxml htmlParseDocument忽略htmlParseOption标志"中,并在loadHTML*上提交为PHP Bug#74004 LIBXML_NOWARNING标志.
但是,您可以管理自己的错误处理,直到删除缺陷为止:
libxml_use_internal_errors(true)在打电话前设定DOMDocument::loadHTML.这将防止错误冒泡到您的默认错误处理程序.然后,您可以使用其他libxml错误函数(例如libxml_get_errors())获取它们(如果您愿意).libxml_use_internal_errors().代码示例:
$doc = new DOMDocument();
# clear errors list if any
libxml_clear_errors();
# use internal errors, don't spill out warnings
$previous = libxml_use_internal_errors(true);
$doc->loadHTML("<tagthatdoesnotexist><h1>Hi</h1></tagthatdoesnotexist>");
echo $doc->saveHTML();
# clear errors list if any
libxml_clear_errors();
# restore previous behavior
libxml_use_internal_errors($previous);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1157 次 |
| 最近记录: |