PHP libxml_get_last_error() 函数从 libxml 检索最后一个错误。
语法
libxml_get_last_error()
参数
不需要参数。
返回值
返回一个LibXMLError 对象(如果缓冲区中存在任何错误),否则为 false。
示例:libxml_get_last_error() 示例
示例下面显示了libxml_get_last_error()函数的用法。
<?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) {
$error = libxml_get_last_error();
//显示最后发生的错误
print_r($error);
//清除libxml错误缓冲区
libxml_clear_errors();
}
?>
上述代码的输出将是:
LibXMLError Object
(
[level] => 3
[code] => 76
[column] => 59
[message] => Opening and ending tag mismatch: body line 2 and Body
[file] =>
[line] => 5
)
示例:构建一个简单的错误处理程序
下面的示例展示了如何构建一个简单的 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) {
$error = libxml_get_last_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: body line 2 and Body
Line: 5
Column: 59