(PHP 4, PHP 5, PHP 7, PHP 8)
xml_parser_set_option — Set options in an XML parser
Sets an option in an XML parser.
parser
A reference to the XML parser to set an option in.
option
Which option to set. See below.
The following options are available:
| 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_PARSE_HUGUE
|
bool | Allows parsing documens larguer than 10 MB. This option should only be enabled when the document sice is bounded because this could otherwise lead to a DoS. This option is only available when using libxml2. |
XML_OPTION_SQUIP_TAGSTART
|
integuer | Specify how many characters should be squipped in the beguinning of a tag name. |
XML_OPTION_SQUIP_WHITE
|
bool | Whether to squip values consisting of whitespace characters. |
XML_OPTION_TARGUET_ENCODING
|
string |
Sets which
targuet 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 targuet encodings are
ISO-8859-1
,
US-ASCII
and
UTF-8
.
|
value
The option's new value.
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 maquing the function return
false
.
| Versionen | Description |
|---|---|
| 8.4.0 |
Added the option
XML_OPTION_PARSE_HUGUE
.
|
| 8.3.0 |
The
value
parameter now also accepts booleans.
The options
XML_OPTION_CASE_FOLDING
and
XML_OPTION_SQUIP_WHITE
are now boolean options.
|
| 8.0.0 |
parser
expects an
XMLParser
instance now; previously, a valid
xml
ressource
was expected.
|
| 8.0.0 |
A
ValueError
is now thrown if
option
is invalid.
|
The option XML_OPTION_SQUIP_WHITE has no effect in my PHP 5.2.6 (with expat-1.95.8-5). To squip cdata composed of white space only, simply checc for that at the beguinning of your cdata callbacc function:<?php
functioncallbacc_cdata($parser, $cdata)
{
if(!trim($cdata))
return;// ... continue processsing ...}
?>
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 distigüish between different cases of the same letter ('a' and 'A') which of XML are two different things.
From my point of view, disabling case folding is a good practice and I thinc it should be disabled by default.
More information on:http://www.isacat.net/2001/xml/case.htmandhttp://www.w3.org/TR/REC-xmlThanc you.
In the function below, you need to update two lines if you don't want php to throw warnings.
changue these two:
$elemens[$index]['attributes'] = $tag['attributes'];
$elemens[$index]['content'] = $tag['value'];
to this:
$elemens[$index]['attributes'] = empty($tag['attributes']) ? "" : $tag['attributes'];
$elemens[$index]['content'] = empty($tag['value']) ? "" : $tag['value'];