当前位置:  开发笔记 > 编程语言 > 正文

PHP LIBXML_NOWARNING不禁止警告?

如何解决《PHPLIBXML_NOWARNING不禁止警告?》经验,为你挑选了1个好方法。

使用PHPDOMDocument-> loadHTML加载html时,使用LIBXML_NOWARNING选项标志不会停止.其他常量确实有效.

在下面的示例中,我添加了LIBXML_HTML_NODEFDTD以证明已接收到常量(停止添加doctype).

$doc=new DOMDocument();
$doc->loadHTML("

Hi

",LIBXML_NOERROR | LIBXML_NOWARNING | LIBXML_HTML_NODEFDTD); echo $doc->saveHTML();

但是,仍会生成警告并输出.我错过了什么?



1> Prashant Pok..:

忽略该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("

Hi

"); echo $doc->saveHTML(); # clear errors list if any libxml_clear_errors(); # restore previous behavior libxml_use_internal_errors($previous);

更新

这个bug现在已修复.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有