Signatur
Beschreibung
xml_error_string() wandelt einen numerischen XML-Fehlercode in einen menschenlesbaren englischen Fehlertext um. Die Fehlercodes werden typischerweise über xml_get_error_code() ermittelt, nachdem ein XML-Parser beim Parsen eines Dokuments auf ein Problem gestoßen ist.
Die Funktion ist Teil der ereignisbasierten Expat-XML-Parser-Erweiterung von PHP und arbeitet eng mit Funktionen wie xml_parse(), xml_get_error_code(), xml_get_current_line_number() und xml_get_current_column_number() zusammen. Gemeinsam ermöglichen sie eine präzise Fehlerdiagnose beim Verarbeiten von XML-Dokumenten.
Typischer Einsatz ist die strukturierte Fehlerbehandlung nach einem fehlgeschlagenen xml_parse()-Aufruf: Man liest den Fehlercode aus, holt den zugehörigen Text mit xml_error_string() und kombiniert ihn mit Zeilen- und Spalteninformation zu einer aussagekräftigen Fehlermeldung.
- Liefert
false, wenn der übergebene Code keinem bekannten Fehlercode entspricht. - Die zurückgegebene Zeichenkette ist immer auf Englisch, da sie direkt aus der zugrundeliegenden Expat-Bibliothek stammt.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $code Pflicht | int | Ein numerischer XML-Fehlercode, wie er von xml_get_error_code() zurückgegeben wird. Gültige Werte entsprechen den XML_ERROR_*-Konstanten. |
Rückgabewert
false zurück, wenn code keinem gültigen XML-Fehlercode entspricht.Beispiele
Einfache Fehlerdiagnose nach fehlgeschlagenem xml_parse()
<?php
$parser = xml_parser_create();
$ungueltigesXml = '<root><offen>Text ohne schließendes Tag</root>';
if (!xml_parse($parser, $ungueltigesXml, true)) {
$fehlerCode = xml_get_error_code($parser);
$fehlerText = xml_error_string($fehlerCode);
$zeile = xml_get_current_line_number($parser);
$spalte = xml_get_current_column_number($parser);
echo sprintf(
"XML-Fehler: %s (Code %d) in Zeile %d, Spalte %d\n",
$fehlerText,
$fehlerCode,
$zeile,
$spalte
);
}
xml_parser_free($parser);
Fehlercode direkt mit XML_ERROR_*-Konstante nachschlagen
<?php
// Fehlermeldung für bekannte XML-Fehlerkonstanten ausgeben
$codes = [
XML_ERROR_NONE,
XML_ERROR_NO_MEMORY,
XML_ERROR_SYNTAX,
XML_ERROR_UNDEFINED_ENTITY,
XML_ERROR_RECURSIVE_ENTITY_REF,
];
foreach ($codes as $code) {
printf("Code %2d: %s\n", $code, xml_error_string($code));
}
// Ungültiger Code
var_dump(xml_error_string(9999));
// Wichtig · Fallstricke
Hinweis zur Erweiterung: Die Expat-basierte XML-Parser-Erweiterung (ext/xml) ist in PHP 8 weiterhin vorhanden, aber für komplexe XML-Verarbeitung empfiehlt sich der Einsatz von SimpleXML, DOMDocument oder XMLReader, die teilweise bessere Fehlermeldungen und mehr Funktionsumfang bieten.
Sprache der Fehlermeldungen: Die zurückgegebenen Texte sind immer Englisch und kommen direkt aus der Expat-Bibliothek. Eine Übersetzung in die Anwendungssprache muss manuell anhand des Fehlercodes erfolgen.
Rückgabe bei Fehlercode 0: XML_ERROR_NONE (Wert 0) bedeutet kein Fehler; xml_error_string(0) gibt eine leere Zeichenkette zurück, nicht false.