|
|
http_build_query
Erstellen eines URL-kodierten Query-Strings
Beschreibung
string http_build_query
( mixed $query_data
[, string $numeric_prefix
[, string $arg_separator
[, int $enc_type = PHP_QUERY_RFC1738
]]] )
Parameter-Liste
-
query_data
-
Kann ein Array oder ein Objekt sein, das Eigenschaften enthält.
Ist query_data ein Array, kann es eine einfache eindimensionale Struktur haben, oder ein
Array aus Arrays sein (die wiederum weitere Arrays enthalten können).
Ist query_data ein Objekt, werden nur
öffentliche Eigenschaften in das Ergebnis einbezogen.
-
numeric_prefix
-
Wenn numerische Indizes im äußeren Array verwendet werden und ein
numeric_prefix angegeben 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_type
PHP_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_type
PHP_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.
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
- parse_url
- urlencode
- array_walk
|