parse_str în PHP

URL și HTTP PHP 4+

Transformă textul de interogare al unui URL (a=1&b=2) într-un tablou, cu valorile decodate.

Sintaxă
parse_str(string $string, &$result): void

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ști ArgumentCountError.
  • Te miri că cheia a.b sau a b a devenit a_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ă ?).