我想了解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意外地返回无效的uri警告。如何能够libxml_use_internal_errors( true )和隐藏xml解析警告?
发布于 2020-04-08 17:37:18
从php 7.3.15开始,它似乎工作正常。这两个示例都没有显示警告,但第二个示例确实捕获了警告。该标志并不阻止通过该函数捕获警告,它只会禁止警告显示在控制台或web浏览器上。
https://stackoverflow.com/questions/52998113
复制相似问题