http_build_query

(PHP 5, PHP 7, PHP 8)

http_build_queryGenerar una cadena de consulta codificada estilo URL

Descripción

http_build_query(
    mixed$query_data,
    string$numeric_prefix = ?,
    string$arg_separator = ?,
    int$enc_type = PHP_QUERY_RFC1738
): string

Genera una cadena de consulta codificada estilo URL a partir del array asociativo (o indexado) dado.

Parámetros

query_data

Puede ser un array u objeto que contenga propiedades.

Si query_data es un array, puede ser de una dimensión, o un array de arrays (que a su vez puede contener otros arrays).

Si query_data es un objeto, sólo las propiedades que son públicas serán incorporadas en el resultado.

numeric_prefix

Si se usan índices numéricos en el array base y se provee este parámetro, éste será añadido al comienzo de los índices numéricos para aquellos elementos encontrados sólo en el array base.

Esto significa tener en cuenta los nombres de variables legales cuando los datos sean decodificados por PHP u otra aplicación CGI más adelante.

arg_separator

arg_separator.output se usa para separar argumentos, aunque podría ser sobrescrito especificando este parámetro.

enc_type

Por omisión, PHP_QUERY_RFC1738.

Si enc_type es PHP_QUERY_RFC1738, la codificación se realiza de acuerdo al » RFC 1738 y el tipo de medios application/x-www-form-urlencoded, lo que implica que los espacios son codificados con el signo más (+).

Si enc_type es PHP_QUERY_RFC3986, la codificación se realiza de acuerdo al » RFC 3986, y los espacios serán codificados (%20) más.

Valores devueltos

Devuelve una cadena codificada en forma URL.

Historial de cambios

VersiónDescripción
5.4.0 Se agregó el parámetro enc_type.
5.1.3 Los corchetes cuadrados son escapados.
5.1.2 Se agregó el parámetro arg_separator.

Ejemplos

Ejemplo #1 Uso simple de http_build_query()

<?php
$data
= array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');

echo
http_build_query($data) . "\n";
echo
http_build_query($data, '', '&amp;');

?>

El resultado del ejemplo sería:

foo=bar&baz=boom&cow=milk&php=hypertext+processor foo=bar&amp;baz=boom&amp;cow=milk&amp;php=hypertext+processor

Ejemplo #2 http_build_query() con elementos indexados numéricamente.

<?php
$data
= array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor');

echo
http_build_query($data) . "\n";
echo
http_build_query($data, 'myvar_');
?>

El resultado del ejemplo sería:

0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor

Ejemplo #3 con arrays complejos http_build_query()

<?php
$data
= array('user'=>array('name'=>'Bob Smith',
'age'=>47,
'sex'=>'M',
'dob'=>'5/12/1956'),
'pastimes'=>array('golf', 'opera', 'poker', 'rap'),
'children'=>array('bobby'=>array('age'=>12,
'sex'=>'M'),
'sally'=>array('age'=>8,
'sex'=>'F')),
'CEO');

echo
http_build_query($data, 'flags_');
?>

esto generará la salida: (acotada por razones de legibilidad)

user%5Bname%5D=Bob+Smith&user%5Bage%5D=47&user%5Bsex%5D=M& user%5Bdob%5D=5%2F12%2F1956&pastimes%5B0%5D=golf&pastimes%5B1%5D=opera& pastimes%5B2%5D=poker&pastimes%5B3%5D=rap&children%5Bbobby%5D%5Bage%5D=12& children%5Bbobby%5D%5Bsex%5D=M&children%5Bsally%5D%5Bage%5D=8& children%5Bsally%5D%5Bsex%5D=F&flags_0=CEO

Nota:

Sólo el elemento "CEO" indexado numéricamente el array base recibió un prefijo. Los otros índices numéricos, encontrados bajo los pasatiempos, no requieren un prefijo tipo cadena para ser nombres legales de variables.

Ejemplo #4 Uso de http_build_query() con un objeto

<?php
class parentClass {
public
$pub = 'publicParent';
protected
$prot = 'protectedParent';
private
$priv = 'privateParent';
public
$pub_bar = Null;
protected
$prot_bar = Null;
private
$priv_bar = Null;

public function
__construct(){
$this->pub_bar = new childClass();
$this->prot_bar = new childClass();
$this->priv_bar = new childClass();
}
}

class
childClass {
public
$pub = 'publicChild';
protected
$prot = 'protectedChild';
private
$priv = 'privateChild';
}

$parent = new parentClass();

echo
http_build_query($parent);

?>

El resultado del ejemplo sería:

pub=publicParent&pub_bar%5Bpub%5D=publicChild

Ver también

  • parse_str() - Convierte el string en variables
  • parse_url() - Analiza un URL y devuelve sus componentes
  • urlencode() - Codifica como URL una cadena
  • array_walk() - Aplicar una función proporcionada por el usuario a cada miembro de un array
To Top