Start · Sprachen · PHP · Referenz · xml_parser_get_option

xml_parser_get_option

Funktion

Liefert den aktuellen Wert einer bestimmten Option eines XML-Parsers.

seit PHP 4.0.0 Kategorie: xml

Signatur

xml_parser_get_option(XMLParser $parser, int $option): string|int|bool

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

Typ
string|int|bool
Beschreibung
Gibt den aktuellen Wert der angeforderten Option zurück. Der Typ hängt von der abgefragten Option ab: 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);
Case Folding: 1 Skip Tag Start: 0 Skip Whitespace: 0 Target Encoding: 'UTF-8'

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);
Case Folding wurde deaktiviert. Neuer Wert fuer Case Folding: 0

// 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.