Volver a la página principal
lunes 4 noviembre 2024
12

Cómo construir una cadena de consulta en PHP con http_build_query()

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.

¿Qué es 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.

Sintaxis

string http_build_query ( array|object $data [, string $numeric_prefix = "" [, string $arg_separator = "&" [, int $encoding_type = PHP_QUERY_RFC1738 ]]] )
  • data: Un array o un objeto que contiene los datos a convertir en una cadena de consulta.
  • numeric_prefix (opcional): Prefijo que se añade a las claves numéricas.
  • arg_separator (opcional): El carácter utilizado para separar los argumentos en la cadena de consulta (por defecto, &).
  • encoding_type (opcional): Método de codificación. Puede ser:
  • PHP_QUERY_RFC1738 (por defecto): Codifica los espacios como +.
  • PHP_QUERY_RFC3986: Codifica los espacios como %20.

Valores de retorno

Devuelve una cadena de texto con la cadena de consulta generada a partir del array proporcionado.

Ejemplo básico de uso de 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

Uso con un array multidimensional

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

Ejemplo con el prefijo para claves numéricas

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&param1=valor2&param2=valor3

Ejemplo con 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

Ejemplo práctico: Construcción de URL con parámetros

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

Referencia oficial

Para más información sobre http_build_query() en PHP, visita la documentación oficial de PHP.

Etiquetas:
php
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer