libxml_get_errors

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

libxml_get_errors 检索错误数组

说明

libxml_get_errors(): array

检索错误数组。

参数

此函数没有参数。

返回值

如果缓冲区中存在任何错误,则返回包含 LibXMLError 对象的数组;否则返回空数组。

示例

示例 #1 libxml_get_errors() 示例

此示例演示如何构建简单的 libxml 错误处理程序。

<?php

libxml_use_internal_errors
(true);

$xmlstr = <<< XML
<?xml version='1.0' standalone='yes'?>
<movies>
<movie>
<titles>PHP: Behind the Parser</title>
</movie>
</movies>
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_clear_errors();
}


function
display_xml_error($error, $xml)
{
$return = $xml[$error->line - 1] . "\n";
$return .= str_repeat('-', $error->column) . "^\n";

switch (
$error->level) {
case
LIBXML_ERR_WARNING:
$return .= "警告 $error->code: ";
break;
case
LIBXML_ERR_ERROR:
$return .= "错误 $error->code: ";
break;
case
LIBXML_ERR_FATAL:
$return .= "致命错误 $error->code: ";
break;
}

$return .= trim($error->message) .
"\n 行: $error->line" .
"\n 列: $error->column";

if (
$error->file) {
$return .= "\n 文件: $error->file";
}

return
"$return\n\n--------------------------------------------\n\n";
}

?>

以上示例将输出

<titles>PHP: Behind the Parser</title>
----------------------------------------------^
Fatal Error 76: Opening and ending tag mismatch: titles line 4 and title
  Line: 4
  Column: 46

--------------------------------------------

参见

添加说明

用户贡献说明 1 个说明

lech
7 年前
请注意,列属性似乎几乎总是无效。我以为它只在问题行很长时才会发生(我正要提交一个带有示例的错误报告),但是,在发布时,你甚至可以在此页面上提供的示例中看到问题:第 4 行甚至没有 46 个字符。在 XML 行很长的情况下,差异可能非常大。

此属性来自 libxml 扩展,因此在任何情况下,我认为这不是 PHP 错误,但是值得知道该值可能完全不可靠以避免混淆。

LibXMLError 类的 PHP 文档页面提供了一些指示,指出

"此属性在 libxml 中并未完全实现,因此通常返回 0."

(我的 libxml 版本:2.9.1)
To Top