Signatur
Beschreibung
xml_parser_get_option() gibt den aktuell gesetzten Wert einer Option des angegebenen XML-Parsers zurück. Die Funktion gehört zur Expat-basierten XML-Erweiterung von PHP und ergänzt xml_parser_set_option(), mit der Optionen gesetzt werden können.
Typische Anwendungsfälle sind die Inspektion des aktuellen Verhaltens eines Parsers, etwa um zu prüfen, ob die Case-Folding-Option aktiv ist oder welche Ziel-Kodierung verwendet wird. Dies ist besonders nützlich beim Debuggen komplexer XML-Verarbeitungs-Pipelines oder wenn Parser-Konfigurationen aus externen Quellen stammen.
Verfügbare Optionen sind: XML_OPTION_CASE_FOLDING (ob Element-Namen in Großbuchstaben konvertiert werden), XML_OPTION_SKIP_TAGSTART (wie viele Zeichen vom Anfang eines Tag-Namens übersprungen werden), XML_OPTION_SKIP_WHITE (ob Whitespace-Only-Textelemente übersprungen werden) und XML_OPTION_TARGET_ENCODING (die Ziel-Zeichenkodierung des Parsers).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $parser Pflicht | XMLParser | Eine gültige XMLParser-Instanz, die zuvor mit xml_parser_create() oder xml_parser_create_ns() erzeugt wurde. |
|
| $option Pflicht | int | Die abzufragende Option. Mögliche Werte sind: XML_OPTION_CASE_FOLDING, XML_OPTION_SKIP_TAGSTART, XML_OPTION_SKIP_WHITE und XML_OPTION_TARGET_ENCODING. |
Rückgabewert
XML_OPTION_TARGET_ENCODING liefert einen string, die übrigen Optionen liefern einen int- bzw. bool-Wert. Bei einem ungültigen $option-Wert wird false zurückgegeben.Beispiele
Aktuelle Optionen eines XML-Parsers auslesen
<?php
$parser = xml_parser_create('UTF-8');
// Standard-Werte der Optionen ausgeben
$caseFolding = xml_parser_get_option($parser, XML_OPTION_CASE_FOLDING);
$skipTagStart = xml_parser_get_option($parser, XML_OPTION_SKIP_TAGSTART);
$skipWhite = xml_parser_get_option($parser, XML_OPTION_SKIP_WHITE);
$targetEncoding = xml_parser_get_option($parser, XML_OPTION_TARGET_ENCODING);
echo "Case Folding: " . var_export($caseFolding, true) . PHP_EOL;
echo "Skip Tag Start: " . var_export($skipTagStart, true) . PHP_EOL;
echo "Skip Whitespace: " . var_export($skipWhite, true) . PHP_EOL;
echo "Target Encoding: " . var_export($targetEncoding, true) . PHP_EOL;
xml_parser_free($parser);
Option prüfen und bei Bedarf anpassen
<?php
$parser = xml_parser_create();
// Prüfen ob Case Folding aktiv ist, und ggf. deaktivieren
if (xml_parser_get_option($parser, XML_OPTION_CASE_FOLDING)) {
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, false);
echo "Case Folding wurde deaktiviert." . PHP_EOL;
} else {
echo "Case Folding war bereits deaktiviert." . PHP_EOL;
}
// Erneut prüfen
$newValue = xml_parser_get_option($parser, XML_OPTION_CASE_FOLDING);
echo "Neuer Wert fuer Case Folding: " . var_export($newValue, true) . PHP_EOL;
xml_parser_free($parser);
// Wichtig · Fallstricke
Achtung: Ab PHP 8.0.0 ist der Typ des ersten Parameters von resource auf XMLParser geändert worden. Code, der ältere PHP-Versionen unterstützen muss, sollte dies berücksichtigen.
Bei Übergabe einer ungültigen Option-Konstante gibt die Funktion false zurück und erzeugt einen Fehler vom Typ E_WARNING. Es sollten ausschließlich die definierten XML_OPTION_*-Konstanten verwendet werden.
Standardmäßig ist XML_OPTION_CASE_FOLDING aktiviert (Wert 1), was dazu führt, dass alle Tag-Namen in Großbuchstaben umgewandelt werden. Dies kann bei case-sensitiven XML-Dokumenten zu unerwartetem Verhalten führen.