http_build_query
(PHP 5, PECL pecl_http:0.1.0-0.9.0)
http_build_query — Gera a string de consulta (query) em formato URL
Descrição
Gera a string de consulta (query) em formato URL a partir de um array associativo (ou indexado).
Parâmetros
- formdata
-
Pode ser uma array ou objeto contendo propriedades.
O array form pode ser uma estrutura simples, unidimensional, ou um array de arrays (que, por sua vez, pode contar outros array).
- numeric_prefix
-
Se Ãndices numéricos são usados no array base e esse parâmetro for fornecido, o número Ãndice dos elementos será prefixado com seu valor, apenas no array base.
Isso é feito para permitir nomes de variáveis aceitáveis quando os dados forem decodificados pelo PHP ou por outra aplicação CGI posteriormente.
- arg_separator
-
arg_separator.output é usado para separar argumentos, a não que esse parâmetro seja especificado. Nesse caso, o valor passado é usado como separador.
Valor Retornado
Retorna um string no formato de uma URL.
Histórico
Versão | Descrição |
---|---|
5.1.2 | O parâmetro arg_separator foi adicionao. |
5.1.3 | colchetes são escapados, ou seja, recebem um caracter de controle. |
Exemplos
Example#1 Exemplo de uso de http_build_query()
<?php
$data = array('foo'=>'bar',
'baz'=>'boom',
'cow'=>'milk',
'php'=>'hypertext processor');
echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
echo http_build_query($data, '', '&'); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
?>
Example#2 http_build_query() com elementos indexados numericamente.
<?php
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor');
echo http_build_query($data) . "\n";
echo http_build_query($data, 'myvar_');
?>
O exemplo acima irá imprimir:
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
Example#3 http_build_query() com arrays complexos
<?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_');
?>
isso resultará : (quebra de linhas para legibilidade)
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: Apenas o elemento indexado numericamente no array base "CEO" recebeu um prefixo. Os outros Ãndices numéricos, encontrados abaixo de "pastimes", não requerem uma string de prefixo para serem nomes de variáveis aceitáveis.
Example#4 Usando http_build_query() com um objeto
<?php
class myClass {
var $foo;
var $baz;
function myClass() {
$this->foo = 'bar';
$this->baz = 'boom';
}
}
$data = new myClass();
echo http_build_query($data); // foo=bar&baz=boom
?>