(PHP 5, PHP 7, PHP 8)
http_build_query — Genera una string de consulta con codificación URL
$data
,$numeric_prefix
= "",$arg_separator
= null
,$encoding_type
= PHP_QUERY_RFC1738
Genera una string con codificación URL, construida a partir del array
indexado o asociativo data
.
data
Puede ser un array o un objeto que contiene propiedades.
Si data
es un array, entonces puede
ser un array de una o varias dimensiones.
Si data
es un objeto, entonces solo los
atributos públicos serán utilizados en el resultado.
numeric_prefix
Si se utilizan índices numéricos en
el array base y numeric_prefix
es proporcionado,
será utilizado para prefijar los nombres de los índices para los elementos del array
base solamente.
Esto permite generar nombres de variables válidos si los datos son luego decodificados por PHP o una aplicación CGI.
arg_separator
El separador de argumentos. Si no está definido o es null
,
arg_separator.output es
utilizado para separar los argumentos.
encoding_type
Por omisión, vale PHP_QUERY_RFC1738
.
Si encoding_type
vale
PHP_QUERY_RFC1738
,
entonces la codificación se realiza conforme a la
» RFC 1738
y los espacios del tipo de medio
application/x-www-form-urlencoded
, que
se ve afectado por esta elección, serán codificados en forma
de un signo más (+
).
Si encoding_type
vale
PHP_QUERY_RFC3986
, entonces la codificación
se realiza conforme a la
» RFC 3986, y los
espacios serán codificados como signo de porcentaje (%20
).
Devuelve una chaîne de caractères codificada URL.
Versión | Descripción |
---|---|
8.0.0 |
arg_separator ahora puede ser nullable.
|
Ejemplo #1 Uso simple de http_build_query()
<?php
$data = array(
'foo' => 'bar',
'baz' => 'boom',
'cow' => 'milk',
'null' => null,
'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 array indexado
<?php
$data = array('foo', 'bar', 'baz', null, '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&4=boom&cow=milk&php=hypertext+processor myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_4=boom&cow=milk&php=hypertext+processor
Ejemplo #3 http_build_query() con array complejo
<?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_');
?>
El ejemplo anterior mostrará: (en varias líneas para mayor 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:
Solo los elementos indexados numéricamente ("
CEO
") en el array base son prefijados. Los otros índices numéricos en otros niveles no necesitan serlo para tener nombres válidos.
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