(PHP 4, PHP 5, PHP 7, PHP 8)
xml_parser_set_option — Establece las opciones de un analizador XML
Establece las opciones de un analizador XML.
parserUna referencia a un analizador XML.
optionLa opción a modificar. Ver más abajo.
Las siguientes opciones están disponibles:
| Opción | Tipo de datos | Descripción |
|---|---|---|
XML_OPTION_CASE_FOLDING |
bool | Controla el manejo de la caja de las etiquetas de este analizador XML. Por omisión, está activado. |
XML_OPTION_PARSE_HUGE |
bool | Permite analizar documentos de más de 10 MB. Esta opción solo debe activarse si el tamaño del documento está limitado, ya que de lo contrario podría conducir a un ataque de denegación de servicio (DoS). Esta opción solo está disponible al usar libxml2. |
XML_OPTION_SKIP_TAGSTART |
bool | Especifica cuántos caracteres deben omitirse al inicio del nombre de la etiqueta. |
XML_OPTION_SKIP_WHITE |
int | Omite o no los valores que contienen caracteres en blanco. |
XML_OPTION_TARGET_ENCODING |
string |
Modifica la codificación de destino
utilizada por este analizador XML. Por omisión, es la que
se especificó al llamar a
xml_parser_create() . Las codificaciones soportadas
son ISO-8859-1, US-ASCII
y UTF-8.
|
valueEl nuevo valor de la opción.
Lanza una ValueError cuando se pasa un valor inválido
a option.
Antes de PHP 8.0.0, pasar un valor inválido a option
generaba una advertencia E_WARNING
y hacía que la función devolviera el valor false .
| Versión | Descripción |
|---|---|
| 8.4.0 |
Se añadió la opción XML_OPTION_PARSE_HUGE .
|
| 8.3.0 |
El parámetro value ahora también acepta valores booleanos.
Las opciones XML_OPTION_CASE_FOLDING y XML_OPTION_SKIP_WHITE
ahora son opciones booleanas.
|
| 8.0.0 |
parser ahora espera una instancia de XMLParser
; anteriormente, se esperaba un recurso xml de tipo resource válido.
|
| 8.0.0 |
Ahora se lanza una excepción ValueError si
la option es inválida.
|
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 ...
}
?>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.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'];