http_build_query în PHP

URL și HTTP PHP 5+

Transformă un tablou în textul de interogare al unui URL (a=1&b=2), cu toate valorile codate corect.

Sintaxă
http_build_query(object|array $data, string $numeric_prefix = '', ?string $arg_separator = null, int $encoding_type = PHP_QUERY_RFC1738): string

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ă $q conține & sau spații, URL-ul se strică. Folosește http_build_query.
  • Te aștepți ca un parametru cu valoarea null să apară în URL ca autor=. 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.