Ce face parse_str
parse_str face operația inversă lui http_build_query: citește un text de forma nume=Ana&oras=Ia%C8%99i și pune perechile într-un tablou, cu valorile deja decodate. Parametrii cu [] în nume devin tablouri.
Rezultatul se scrie în variabila dată ca al doilea parametru. Din PHP 8 acest parametru este obligatoriu (versiunile vechi creau variabile globale, ceea ce era periculos).
Parametri
| Parametru | Descriere |
|---|---|
$string |
Textul de interogare, fără ?. |
$result |
Variabila în care se pune tabloul rezultat. |
Ce returnează
Nimic. Rezultatul ajunge în $result.
Exemple
Exemplul 1: Interogare simplă și tablouri
<?php
parse_str("nume=Ana&oras=Ia%C8%99i&tag[]=php&tag[]=sql", $date);
print_r($date);
Rezultat
Array
(
[nume] => Ana
[oras] => Iași
[tag] => Array
(
[0] => php
[1] => sql
)
)
Exemplul 2: Parametrii unui link salvat
<?php
$link = "https://magazin.ro/cauta?q=laptop&pret_max=3000&pagina=2";
parse_str(parse_url($link, PHP_URL_QUERY), $parametri);
echo "Caută: {$parametri['q']}, până la {$parametri['pret_max']} lei";
Rezultat
Caută: laptop, până la 3000 lei
Greșeli frecvente
- Apelezi
parse_str($text)fără al doilea parametru. În PHP 8 primeștiArgumentCountError. - Te miri că cheia
a.bsaua ba devenita_b. PHP înlocuiește punctele și spațiile din numele parametrilor cu_.
Comenzi înrudite
http_build_query: Transformă un tablou în textul de interogare al unui URL (a=1&b=2), cu toate valorile codate corect.parse_url: Împarte un URL în componente: protocol, domeniu, port, cale, interogare și fragment.urlencode / urldecode: Codează un text ca să poată fi pus în siguranță într-un URL, ca valoare a unui parametru (după ?).