(PHP 4, PHP 5, PHP 7, PHP 8)
parse_str — Analiza una string como una cadena de consulta URL
Analiza la string string
como si se tratara de los parámetros pasados a través de la URL. Todas las variables que identifica son creadas con sus valores respectivos (o en el array si result
es proporcionado).
string
La string de entrada.
result
Una variable pasada por referencia, que será definida como un array conteniendo los pares clave-valor extraídos de string
. Si el parámetro result
no es pasado, una variable separada es definida en el ámbito local para cada clave.
El uso de esta función sin el parámetro result
está muy fuertemente desaconsejado y no recomendado a partir de PHP 7.2. A partir de PHP 8.0.0, el parámetro result
es obligatorio.
No devuelve ningún valor.
Versión | Descripción |
---|---|
8.0.0 |
result ya no es opcional.
|
7.2.0 |
El uso de parse_str() sin el segundo argumento emite una nota E_DEPRECATED .
|
Ejemplo #1 Ejemplo con parse_str()
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
// Recomendado
parse_str($str, $output);
echo $output['first'], PHP_EOL; // value
echo $output['arr'][0], PHP_EOL; // foo bar
echo $output['arr'][1], PHP_EOL; // baz
?>
Cualquier espacio o punto en los nombres de parámetros es convertido a guión bajo al crear claves de array o variables locales. Esto se debe a que los nombres de variables en PHP no pueden contener espacios o puntos, pero esto se aplica incluso cuando se utiliza esta función con el parámetro result
.
Ejemplo #2 Deformación de nombres por parse_str()
<?php
parse_str("My Value=Something", $output);
echo $output['My_Value']; // Something
?>
Nota:
La función parse_str() se ve afectada por la directiva max_input_vars. Exceder este límite genera una advertencia
E_WARNING
, y cualquier variable más allá de este límite no es añadida al array de resultado. El valor por omisión es 1000; ajuste max_input_vars según sus necesidades.
Nota:
Todos los valores añadidos en el array
result
(o las variables creadas si el segundo parámetro no está definido) ya están decodificados con las mismas reglas que urldecode().
Nota:
Para obtener la cadena de consulta de la petición actual, se puede utilizar la variable $_SERVER['QUERY_STRING']. Asimismo, puede ser de interés leer la sección sobre las variables de fuentes externas.