(PHP 4, PHP 5, PHP 7, PHP 8)
parse_str — Analyse une chaîne de caractères comme une chaîne de requête URL
Analyse la chaîne de caractères string
comme s'il
s'agissait des paramètres passés via l'URL. Toutes les variables
qu'elle y repère sont alors créées, avec leurs valeurs respectives (ou
dans le tableau si result
est fourni).
string
La chaîne d'entrée.
result
Une variable passée par référence, qui sera définie comme un tableau
contenant les paires clé-valeur extraites de string
.
Si le paramètre result
n'est pas passé,
une variable séparée est définie dans la portée locale pour chaque clé.
L'utilisation de cette fonction sans le paramètre result
est très fortement découragé et déconseillé
à partir de PHP 7.2.
À partir de PHP 8.0.0, le paramètre result
est obligatoire.
Aucune valeur n'est retournée.
Version | Description |
---|---|
8.0.0 |
result n'est plus optionnel.
|
7.2.0 |
L'utilisation de parse_str() sans le second argument
émet une note E_DEPRECATED .
|
Exemple #1 Exemple avec parse_str()
<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
// Recommandé
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
?>
N'importe quel espace ou point dans les noms de paramètres est converti en tiret bas
lors de la création de clés de tableau ou de variables locales.
Ceci est dû au fait que les noms de variables en PHP ne peuvent pas contenir d'espaces
ou de points, mais cela s'applique même lorsque vous utilisez
cette fonction avec le paramètre result
.
Exemple #2 Déformation des nom par parse_str()
<?php
parse_str("My Value=Something", $output);
echo $output['My_Value']; // Something
?>
Note:
La fonction parse_str() est affectée par la directive max_input_vars. Dépasser cette limite déclenche un avertissement
E_WARNING
, et toute variable au-delà de cette limite n'est pas ajoutée au tableau de résultat. La valeur par défaut est 1000 ; ajustez max_input_vars selon vos besoins.
Note:
Toutes les valeurs ajoutée dans le tableau
result
(ou les variables créées si le second paramètre n'est pas défini) sont déjà décodées avec les mêmes règles que urldecode().
Note:
Pour obtenir la chaîne de requête de la requête actuelle, vous pouvez utiliser la variable $_SERVER['QUERY_STRING']. En outre, vous voudrez peut-être lire la section sur les variables de sources externes.