Почему libxml_use_internal_errors (true) не поддерживает LIBXML_NOWARNING? - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь понять, как работает 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-разбора?

...