为什么 libxml_use_internal_errors(true) 不尊重 LIBXML_NOWARNING?
Why does libxml_use_internal_errors(true) not respect LIBXML_NOWARNING?
我想了解 libxml_use_internal_errors(true)
的工作原理。它似乎不尊重 LIBXML_NOWARNING
标志。
这里是一个使用 PHP 7.2.4.
的例子
libxml_use_internal_errors( false );
new SimpleXMLElement(
'<DataSet xmlns="iminvalid"></DataSet>',
LIBXML_NOWARNING );
var_dump(sizeof(libxml_get_errors()));
// int(0)
不出所料,这些语句没有发出任何警告。由于 LIBXML_NOWARNING
.
,命名空间警告被隐藏
然而,这:
libxml_use_internal_errors( true );
new SimpleXMLElement(
'<?xml version="1.0" encoding="utf-8"?><DataSet xmlns="iminvalid"></DataSet>',
LIBXML_NOWARNING );
var_dump(sizeof(libxml_get_errors()));
// int(1)
// xmlns: URI iminvalid is not absolute
意外 returns 无效 uri 警告。 libxml_use_internal_errors( true )
和隐藏 xml 解析警告怎么可能?
从 php 7.3.15 开始,它似乎可以正常工作。
两个示例均未显示警告,但第二个示例确实捕获了警告。该标志不会阻止通过函数捕获警告,它只会阻止警告显示在控制台或 Web 浏览器上。
我想了解 libxml_use_internal_errors(true)
的工作原理。它似乎不尊重 LIBXML_NOWARNING
标志。
这里是一个使用 PHP 7.2.4.
的例子libxml_use_internal_errors( false );
new SimpleXMLElement(
'<DataSet xmlns="iminvalid"></DataSet>',
LIBXML_NOWARNING );
var_dump(sizeof(libxml_get_errors()));
// int(0)
不出所料,这些语句没有发出任何警告。由于 LIBXML_NOWARNING
.
然而,这:
libxml_use_internal_errors( true );
new SimpleXMLElement(
'<?xml version="1.0" encoding="utf-8"?><DataSet xmlns="iminvalid"></DataSet>',
LIBXML_NOWARNING );
var_dump(sizeof(libxml_get_errors()));
// int(1)
// xmlns: URI iminvalid is not absolute
意外 returns 无效 uri 警告。 libxml_use_internal_errors( true )
和隐藏 xml 解析警告怎么可能?
从 php 7.3.15 开始,它似乎可以正常工作。 两个示例均未显示警告,但第二个示例确实捕获了警告。该标志不会阻止通过函数捕获警告,它只会阻止警告显示在控制台或 Web 浏览器上。