(PHP 5, PHP 7, PHP 8)
http_build_query — Génère une chaîne de requête en encodage URL
$data
,$numeric_prefix
= "",$arg_separator
= null
,$encoding_type
= PHP_QUERY_RFC1738
Génère une chaîne en encodage URL, construite à partir du tableau
indexé ou associatif data
.
data
Peut être un tableau ou un objet contenant des propriétés.
Si data
est un tableau, alors ce peut
être un tableau à une ou plusieurs dimensions.
Si data
est un objet, alors seuls les
attributs publics seront utilisés dans le résultat.
numeric_prefix
Si des indices numériques sont utilisés dans
le tableau de base et que numeric_prefix
est fourni,
il sera utilisé pour préfixer les noms des index pour les éléments du tableau
de base seulement.
Cela permet de générer des noms de variables valides, si les données sont ensuite décodées par PHP ou une application CGI.
arg_separator
Le séparateur d'arguments. S'il n'est pas défini ou est null
,
arg_separator.output est
utilisée pour séparer les arguments.
encoding_type
Par défaut, vaut PHP_QUERY_RFC1738
.
Si encoding_type
vaut
PHP_QUERY_RFC1738
,
alors l'encodage est effectué conformément à la
» RFC 1738
et les espaces du type de média
application/x-www-form-urlencoded
, qui
est impacté par ce choix, seront encodés sous la forme
d'un signe plus (+
).
Si encoding_type
vaut
PHP_QUERY_RFC3986
, alors l'encodage
est effectué conformément à la
» RFC 3986, et les
espaces seront encodés en signe pourcent (%20
).
Retourne une chaîne de caractères encodée URL.
Version | Description |
---|---|
8.0.0 |
arg_separator est désormais nullable.
|
Exemple #1 Utilisation 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, '', '&');
?>
L'exemple ci-dessus va afficher :
foo=bar&baz=boom&cow=milk&php=hypertext+processor foo=bar&baz=boom&cow=milk&php=hypertext+processor
Exemple #2 http_build_query() avec tableau indexé
<?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_');
?>
L'exemple ci-dessus va afficher :
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
Exemple #3 http_build_query() avec tableau complexe
<?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_');
?>
l'exemple ci-dessus va afficher : (sur plusieurs lignes pour la lisibilité)
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
Note:
Seuls les éléments indexés numériquement ("
CEO
") dans le tableau de base sont préfixés. Les autres indices numériques à d'autres niveaux n'ont pas besoin de l'être pour avoir des noms valides.
Exemple #4 Utilisation de http_build_query() avec un objet
<?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);
?>
L'exemple ci-dessus va afficher :
pub=publicParent&pub_bar%5Bpub%5D=publicChild