http_build_query
(PHP 5)
http_build_query — Erstellen eines URL-kodierten Query-Strings
Beschreibung
$query_data
[, string $numeric_prefix
[, string $arg_separator
[, int $enc_type = PHP_QUERY_RFC1738
]]] )Erstellt einen URL-kodierten Query-String aus einem gegebenen assoziativen (oder indexierten) Array.
Parameter-Liste
-
query_data -
Kann ein Array oder ein Objekt sein, das Eigenschaften enthält.
Ist
query_dataein Array, kann es eine einfache eindimensionale Struktur haben, oder ein Array aus Arrays sein (die wiederum weitere Arrays enthalten können).Ist
query_dataein Objekt, werden nur öffentliche Eigenschaften in das Ergebnis einbezogen. -
numeric_prefix -
Wenn numerische Indizes im äußeren Array verwendet werden und ein
numeric_prefixangegeben wurde, wird dieser nur den numerischen Schlüsseln im äußeren Array vorangestellt.Dieser Weg wurde gewählt, um gültige Variablennamen zu erhalten, wenn die Daten später von PHP oder einer anderen CGI-Applikation dekodiert werden.
-
arg_separator -
arg_separator.output wird verwendet, um die Argumente voneinander zu trennen, es sei denn, dass der Parameter angegeben ist. In diesem Falle wird letzteres verwendet.
-
enc_type -
Standardmäßig
PHP_QUERY_RFC1738.Ist
enc_typePHP_QUERY_RFC1738, wird die Kodierung gemäß » RFC 1738 und dem application/x-www-form-urlencoded Media-Typ durchgeführt, was bedeutet, dass Leerzeichen als Plus-Zeichen (+) kodiert werden.Ist
enc_typePHP_QUERY_RFC3986, wird die Kodierung gemäß » RFC 3986 durchgeführt, und Leerzeichen werden mit einem Prozentzeichen (%20) kodiert.
Rückgabewerte
Gibt einen URL-kodierten String zurück.
Changelog
| Version | Beschreibung |
|---|---|
| 5.4.0 |
enc_type-Parameter hinzugefügt.
|
| 5.1.3 | Eckige Klammern werden maskiert. |
| 5.1.2 |
arg_separator-Parameter hinzugefügt.
|
Beispiele
Beispiel #1 Einfache Verwendung von http_build_query()
<?php
$data = array('foo'=>'bar',
'baz'=>'boom',
'kuh'=>'milch',
'php'=>'hypertext processor');
echo http_build_query($data) . "\n";
echo http_build_query($data, '', '&');
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
foo=bar&baz=boom&kuh=milch&php=hypertext+processor foo=bar&baz=boom&kuh=milch&php=hypertext+processor
Beispiel #2 http_build_query() mit numerischen Index-Elementen.
<?php
$data = array('foo', 'bar', 'baz', 'boom', 'kuh' => 'milch', 'php' =>'hypertext processor');
echo http_build_query($data) . "\n";
echo http_build_query($data, 'meineVariable_');
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
0=foo&1=bar&2=baz&3=boom&kuh=milch&php=hypertext+processor meineVariable_0=foo&meineVariable_1=bar&meineVariable_2=baz&meineVariable_3=boom&kuh=milch&php=hypertext+processor
Beispiel #3 http_build_query() mit verschachtelten Arrays
<?php
$data = array('user'=>array('name'=>'Bob Smith',
'alter'=>47,
'geschlecht'=>'M',
'geb'=>'5/12/1956'),
'hobbies'=>array('golf', 'opera', 'poker', 'rap'),
'kinder'=>array('bobby'=>array('alter'=>12,
'geschlecht'=>'M'),
'sally'=>array('alter'=>8,
'geschlecht'=>'F')),
'CEO');
echo http_build_query($data, 'flags_');
?>
Ausgabe: (für bessere Lesbarkeit umgebrochen!)
user[name]=Bob+Smith&user[alter]=47&user[geschlecht]=M&user[geb]=5%2F12%2F1956& hobbies[0]=golf&hobbies[1]=opera&hobbies[2]=poker&hobbies[3]=rap& kinder[bobby][alter]=12&kinder[bobby][geschlecht]=M&kinder[sally][alter]=8& kinder[sally][geschlecht]=F&flags_0=CEO
Hinweis:
Nur das numerische Indexelement im äußeren Array "CEO" erhält ein Prefix. Die anderen numerischen Indizes unterhalb von hobbies benötigen kein String-Prefix, um einen gültigen Variablennamen darzustellen.
Beispiel #4 Verwendung von http_build_query() mit einem Objekt
<?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);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
pub=publicParent&pub_bar%5Bpub%5D=publicChild
Siehe auch
- parse_str() - Überträgt einen String in Variable
- parse_url() - Analysiert eine URL und gibt ihre Bestandteile zurück
- urlencode() - URL-kodiert einen String
- array_walk() - Wendet eine vom Benutzer gelieferte Funktion auf jedes Element eines Arrays an