get_meta_tags
parse_url
Fonctions URL
PHP Manual

# http_build_query

(PHP 5)

http_build_query — Génère une chaîne de requête en encodage URL

### Description

string http_build_query ( mixed `$query_data` [, string `$numeric_prefix` [, string `$arg_separator` [, int `$enc_type` = `PHP_QUERY_RFC1738` ]]] )

Génère une chaîne en encodage URL, construite à partir du tableau indexé ou associatif `query_data`.

### Liste de paramètres

`query_data`

  Peut être un tableau ou un objet contenant des propriétés.

  Si `query_data` est un tableau, alors ce peut être un tableau à une ou plusieurs dimensions.

  Si `query_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`

  arg_separator.output est utilisée pour séparer les arguments tant que le paramètre `arg_separator` n'est pas fourni.

`enc_type`

  Par défaut, vaut `PHP_QUERY_RFC1738`.

  Si `enc_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 `enc_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).

### Valeurs de retour

Retourne une chaîne de caractères encodée URL.

### Historique

Version | Description
--- | ---
5.4.0 | Le paramètre `enc_type` a été ajouté.
5.1.3 | Les crochets sont échappés.
5.1.2 | Le paramètre `arg_separator` a été ajouté.

### Exemples

Exemple #1 Utilisation 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;');
?>`

L'exemple ci-dessus va afficher :

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

Exemple #2 http_build_query() avec tableau indexé

`<?php
$data = array('foo', 'bar', 'baz', '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&3=boom&cow=milk&php=hypertext+processor
    myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=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_');
?>`

cet exemple 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

### Voir aussi

- parse_str() - Analyse une requête HTTP
- parse_url() - Analyse une URL et retourne ses composants
- urlencode() - Encode une chaîne en URL
- array_walk() - Exécute une fonction sur chacun des éléments d'un tableau

get_meta_tags
parse_url
Fonctions URL
PHP Manual