http_build_query
(PHP 5)
http_build_query — Generar una cadena de consulta codificada estilo URL
Descripción
$query_data
[, string $numeric_prefix
[, string $arg_separator
[, int $enc_type = PHP_QUERY_RFC1738
]]] )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_dataes un array, puede ser de una dimensión, o un array de arrays (que a su vez puede contener otros arrays).Si
query_dataes 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 es para permitir que se opere con nombres de variables legales cuando los datos sean decodificados por PHP u otra aplicación CGI más adelante.
-
arg_separator -
arg_separator.output es usado para separar argumentos, a menos que este parámetro sea especificado, en cuyo caso éste será usado.
-
enc_type -
Por omisión,
PHP_QUERY_RFC1738.Si
enc_typeesPHP_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_typeesPHP_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ón | Descripció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, '', '&');
?>
El resultado del ejemplo sería:
foo=bar&baz=boom&cow=milk&php=hypertext+processor foo=bar&baz=boom&cow=milk&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