PHP libxml_use_internal_errors() 函数禁用标准 libxml 错误并启用用户错误处理。
语法
libxml_use_internal_errors(use_errors)
参数
use_errors | 可选。 启用用户错误处理(true)或禁用用户错误处理(false)。禁用还将清除任何现有的 libxml 错误。 |
注意:自 PHP 8.0.0 起,use_errors 现在可以为空。以前,其默认值为 false。
返回值
返回use_errors的先前值。
示例:
下面的示例展示了如何构建一个简单的 libxml 错误处理程序。
<?php
libxml_use_internal_errors(true);
//包含不匹配的标签
$xmlstr = <<<XML
<mail>
<To>John Smith</too>
<From>Marry G.</From>
<Subject>Happy Birthday</Subject>
<body>Happy birthday. Live your life with smiles.</body>
</mail>
XML;
$doc = simplexml_load_string($xmlstr);
$xml = explode("\n", $xmlstr);
if ($doc === false) {
$errors = libxml_get_errors();
//显示发生错误
foreach ($errors as $error) {
echo display_xml_error($error, $xml);
}
//清除libxml错误缓冲区
libxml_clear_errors();
}
//显示错误信息的函数
function display_xml_error($error, $xml) {
$message = "";
switch ($error->level) {
case LIBXML_ERR_WARNING:
$message .= "Warning $error->code: ";
break;
case LIBXML_ERR_ERROR:
$message .= "Error $error->code: ";
break;
case LIBXML_ERR_FATAL:
$message .= "Fatal Error $error->code: ";
break;
}
$message .= trim($error->message) .
"\n Line: $error->line" .
"\n Column: $error->column";
if ($error->file) {
$message .= "\n File: $error->file";
}
return $message;
}
?>
上述代码的输出将是:
Fatal Error 76: Opening and ending tag mismatch: To line 2 and too
Line: 2
Column: 23