parse_str

parse_str($string, &$result)

Dzieli ciąg parametrów w takiej postaci, w jakiej stoją w adresie URL za znakiem zapytania, i zapisuje je jako tablicę do drugiego parametru. Dekoduje wartości (%C3%B3 na „ó”, + na spację).

Parametry

  • $string – parametry, na przykład „strona=2&sort=nowe”.
  • $result – zmienna, do której zapisze się tablica parametrów.

Przykłady

parse_str("strona=2&sort=nowe", $p);
echo $p["strona"]; // 2
// wartości są zawsze tekstem
var_dump($p["strona"]); // string(1) "2"
// dekodowanie: + to spacja, %C3%B3 to ó
parse_str("name=J%C3%B3zef+Ma%C5%82ysz", $p);
echo $p["name"]; // Józef Małysz
// nawiasy kwadratowe tworzą tablicę
parse_str("tags[]=php&tags[]=mysql&filter[cena]=100", $p);
echo implode(", ", $p["tags"]); // php, mysql
echo $p["filter"]["cena"]; // 100
// kropka i spacja w nazwie zmieniają się w podkreślnik
parse_str("a.b=1&c d=2", $p);
echo implode(", ", array_keys($p)); // a_b, c_d
// parametry z adresu URL
parse_str(parse_url("https://www.garth.cz/szukaj/?q=php+tablice", PHP_URL_QUERY), $p);
echo $p["q"]; // php tablice

Na co uważać

  • Zawsze przekazuj drugi parametr. Bez niego PHP od 7.2 do 7.4 tworzy zmienne z parametrów (przestarzałe i niebezpieczne), od PHP 8.0 to ArgumentCountError.
  • Wszystkie wartości są ciągami znaków albo tablicami, liczby zamieniaj i sprawdzaj sam.
  • Parametr, który miał być tekstem, może przyjść jako tablica (tags[]=…). Sprawdzaj typ wartości.
  • Kropki i spacje w nazwach parametrów zmieniają się w podkreślniki, tak samo jak w $_GET.
  • Liczbę parametrów ogranicza ustawienie max_input_vars (domyślnie 1000), nadmiarowe są odrzucane.

Powiązane funkcje:
parse_url()
http_build_query()
urldecode()
mb_parse_str()
parse_ini_string()