Ce face http_build_query
http_build_query construiește partea de după ? dintr-un URL. Codează automat fiecare cheie și valoare, așa că nu mai trebuie să apelezi urlencode pentru fiecare.
Tablourile din interior devin cheie[0]=...&cheie[1]=... (parantezele apar codate ca %5B și %5D). Valorile null sunt omise, true devine 1, iar false devine 0. Este folosit și pentru corpul cererilor POST trimise cu cURL.
Parametri
| Parametru | Descriere |
|---|---|
$data |
Tabloul (sau obiectul) cu parametrii. |
$numeric_prefix |
Opțional. Prefix pus înaintea cheilor numerice de pe primul nivel. |
$arg_separator |
Opțional. Separatorul dintre parametri. Implicit &. |
$encoding_type |
Opțional. PHP_QUERY_RFC1738 (spațiu ca +, implicit) sau PHP_QUERY_RFC3986 (spațiu ca %20). |
Ce returnează
Textul de interogare, fără ? la început.
Exemple
Exemplul 1: Link de căutare cu filtre
<?php
$filtre = [
"q" => "pâine albă",
"pagina" => 2,
"sortare" => "pret_asc",
];
echo "https://magazin.ro/cauta?" . http_build_query($filtre);
Rezultat
https://magazin.ro/cauta?q=p%C3%A2ine+alb%C4%83&pagina=2&sortare=pret_asc
Exemplul 2: Tablouri, null și valori booleene
<?php
echo http_build_query([
"tag" => ["php", "sql"],
"autor" => null,
"publicat" => true,
"arhivat" => false,
]);
Rezultat
tag%5B0%5D=php&tag%5B1%5D=sql&publicat=1&arhivat=0
Exemplul 3: Spațiu ca %20
<?php
$date = ["oras" => "Baia Mare"];
echo http_build_query($date) . "\n";
echo http_build_query($date, "", "&", PHP_QUERY_RFC3986);
Rezultat
oras=Baia+Mare
oras=Baia%20Mare
Greșeli frecvente
- Construiești interogarea cu concatenare:
"?q=" . $q . "&p=" . $p. Dacă$qconține&sau spații, URL-ul se strică. Foloseștehttp_build_query. - Te aștepți ca un parametru cu valoarea
nullsă apară în URL caautor=. Este omis complet. Folosește""dacă vrei parametrul gol.
Comenzi înrudite
urlencode / urldecode: Codează un text ca să poată fi pus în siguranță într-un URL, ca valoare a unui parametru (după ?).parse_str: Transformă textul de interogare al unui URL (a=1&b=2) într-un tablou, cu valorile decodate.parse_url: Împarte un URL în componente: protocol, domeniu, port, cale, interogare și fragment.curl_init / curl_setopt / curl_exec: Pregătește o cerere HTTP către alt server, de exemplu un API. Împreună cu curl_setopt și curl_exec, trimite cererea și primește răspunsul.