PHP Conference Nagoya 2025

xml_parser_set_option

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_parser_set_optionAffecte les options d'un analyseur XML

Description

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

Affecte les options d'un analyseur XML.

Liste de paramètres

parser

Une référence vers un analyseur XML.

option

L'option à modifier. Voir ci-dessous.

Les options suivantes sont disponibles :

Options de l'analyseur XML
Option Type de données Description
XML_OPTION_CASE_FOLDING bool Contrôle la gestion de la casse des balises de cet analyseur XML. Par défaut, activé.
XML_OPTION_PARSE_HUGE bool Permet d'analyser des documents de plus de 10 Mo. Cette option ne doit être activée que si la taille du document est limitée, car cela pourrait sinon conduire à une attaque par déni de service (DoS). Cette option est uniquement disponible avec l'utilisation de libxml2.
XML_OPTION_SKIP_TAGSTART bool Spécifie combien de caractères doivent être éludés du début du nom de la balise.
XML_OPTION_SKIP_WHITE entier Élude ou non les valeurs contenant des caractères blancs.
XML_OPTION_TARGET_ENCODING string Modifie le codage à la cible utilisé par cet analyseur XML. Par défaut, c'est celui qui a été spécifié lors de l'appel de xml_parser_create(). Les codages supportés sont ISO-8859-1, US-ASCII et UTF-8.

value

La nouvelle valeur de l'option.

Valeurs de retour

Renvoie true en cas de succès ou false en cas d'échec.

Erreurs / Exceptions

Lève une ValueError lorsque qu'une valeur invalide est passée à option.

Antérieur à PHP 8.0.0, passer une valeur invalide à option générait un avertissement E_WARNING et faisait retourner à la fonction la valeur false.

Historique

Version Description
8.4.0 Ajout de l'option XML_OPTION_PARSE_HUGE.
8.3.0 Le paramètre value accepte désormais également les booléens. Les options XML_OPTION_CASE_FOLDING et XML_OPTION_SKIP_WHITE sont désormais des options booléennes.
8.0.0 parser attend une instance de XMLParser désormais; auparavent, une resource xml était attendue.
8.0.0 Une exception ValueError est désormais lancée si le option est invalide.
add a note

User Contributed Notes 3 notes

up
2
www.thomaskoch.it
16 years ago
The option XML_OPTION_SKIP_WHITE has no effect in my PHP 5.2.6 (with expat-1.95.8-5). To skip cdata composed of white space only, simply check for that at the beginning of your cdata callback function:

<?php
function callback_cdata($parser, $cdata)
{
if(!
trim($cdata))
return;

// ... continue processing ...
}
?>
up
1
pupeno at pupeno dot com
22 years ago
XML is case sensitive, then, from my point of view, disabling case folding doesn't goes against xml 1.0 specifications but the contrary, disabling case folding allow us to distiguish between diferent cases of the same letter ('a' and 'A') which of XML are two diferent things.
From my point of view, disabling case folding is a good practice and I think it should be disabled by default.
More information on:
http://www.isacat.net/2001/xml/case.htm
and
http://www.w3.org/TR/REC-xml
Thank you.
up
0
j[no_spam_please] at [thx]jessepearson dot net
17 years ago
In the function below, you need to update two lines if you don't want php to throw warnings.

change these two:
$elements[$index]['attributes'] = $tag['attributes'];
$elements[$index]['content'] = $tag['value'];

to this:
$elements[$index]['attributes'] = empty($tag['attributes']) ? "" : $tag['attributes'];
$elements[$index]['content'] = empty($tag['value']) ? "" : $tag['value'];
To Top