PHPCon Poland 2024

xml_parser_set_option

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

xml_parser_set_optionSet options in an XML parser

Beschreibung

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

Sets an option in an XML parser.

Parameter-Liste

parser

A reference to the XML parser to set an option in.

option

Which option to set. See below.

The following options are available:

XML parser options
Option constant Data type Description
XML_OPTION_CASE_FOLDING bool Controls whether case-folding is enabled for this XML parser. Enabled by default.
XML_OPTION_SKIP_TAGSTART integer Specify how many characters should be skipped in the beginning of a tag name.
XML_OPTION_SKIP_WHITE bool Whether to skip values consisting of whitespace characters.
XML_OPTION_TARGET_ENCODING string Sets which target encoding to use in this XML parser.By default, it is set to the same as the source encoding used by xml_parser_create(). Supported target encodings are ISO-8859-1, US-ASCII and UTF-8.

value

The option's new value.

Rückgabewerte

Returns true on success or false on failure.

Fehler/Exceptions

Throws a ValueError when an invalid value is passed to option.

Prior to PHP 8.0.0, the function returned false when passing an invalid value to option generated a E_WARNING as well as making the function return false.

Changelog

Version Beschreibung
8.3.0 The value parameter now also accepts booleans. The options XML_OPTION_CASE_FOLDING and XML_OPTION_SKIP_WHITE are now boolean options.
8.0.0 parser erwartet nun eine XMLParser-Instanz; vorher wurde eine gültige xml-Ressource erwartet.
8.0.0 A ValueError is now thrown if option is invalid.
add a note

User Contributed Notes 3 notes

up
2
www.thomaskoch.it
15 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
21 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