La función http_build_query()
en PHP permite generar una cadena de consulta (query string) a partir de un array asociativo o multidimensional. Es útil para crear parámetros de URL de forma segura y eficiente, especialmente al enviar datos en una URL o al realizar solicitudes HTTP.
http_build_query()
en PHP?
http_build_query()
convierte un array de datos en una cadena de consulta codificada en formato URL, que se puede añadir a una URL para pasar parámetros en una solicitud GET o enviar datos en una solicitud POST.
string http_build_query ( array|object $data [, string $numeric_prefix = "" [, string $arg_separator = "&" [, int $encoding_type = PHP_QUERY_RFC1738 ]]] )
&
).
PHP_QUERY_RFC1738
(por defecto): Codifica los espacios como +
.
PHP_QUERY_RFC3986
: Codifica los espacios como %20
.
Devuelve una cadena de texto con la cadena de consulta generada a partir del array proporcionado.
http_build_query()
Este ejemplo convierte un array asociativo en una cadena de consulta:
<?php
$params = [
'nombre' => 'Juan',
'apellido' => 'Pérez',
'edad' => 30
];
$query_string = http_build_query($params);
echo $query_string;
// Resultado: nombre=Juan&apellido=Pérez&edad=30
Cuando el array contiene subarrays, http_build_query()
generará una cadena de consulta que incluye los nombres de los subíndices.
<?php
$params = [
'producto' => 'laptop',
'caracteristicas' => [
'marca' => 'Dell',
'modelo' => 'XPS 15'
]
];
$query_string = http_build_query($params);
echo $query_string;
// Resultado: producto=laptop&caracteristicas[marca]=Dell&caracteristicas[modelo]=XPS+15
Si el array contiene claves numéricas, podemos añadir un prefijo para evitar conflictos.
<?php
$params = [
'0' => 'valor1',
'1' => 'valor2',
'2' => 'valor3'
];
$query_string = http_build_query($params, 'param');
echo $query_string;
// Resultado: param0=valor1¶m1=valor2¶m2=valor3
arg_separator
y encoding_type
Podemos personalizar el separador de argumentos y el método de codificación. En este ejemplo, cambiamos el separador de &
a ;
y usamos PHP_QUERY_RFC3986
para codificar espacios como %20
.
<?php
$params = [
'search' => 'laptops de gama alta',
'orden' => 'precio',
'categoria' => 'tecnología'
];
$query_string = http_build_query($params, '', ';', PHP_QUERY_RFC3986);
echo $query_string;
// Resultado: search=laptops%20de%20gama%20alta;orden=precio;categoria=tecnología
Este ejemplo muestra cómo construir una URL completa con parámetros, útil en aplicaciones que necesitan generar enlaces dinámicos.
<?php
$base_url = "https://www.ejemplo.com/busqueda";
$params = [
'q' => 'PHP',
'pagina' => 1,
'ordenar' => 'relevancia'
];
$url_completa = $base_url . '?' . http_build_query($params);
echo $url_completa;
// Resultado: https://www.ejemplo.com/busqueda?q=PHP&pagina=1&ordenar=relevancia
Para más información sobre http_build_query()
en PHP, visita la documentación oficial de PHP.
Jorge García
Fullstack developer