(PHP 5, PHP 7, PHP 8)
http_build_query — Liefert einen URL-kodierten Query-String
$data
,$numeric_prefix
= "",$arg_separator
= null
,$encoding_type
= PHP_QUERY_RFC1738
Erstellt einen URL-kodierten Query-String aus einem gegebenen assoziativen (oder indexierten) Array.
data
Kann ein Array oder ein Objekt sein, das Eigenschaften enthält.
Ist data
ein Array, kann es eine einfache
eindimensionale Struktur haben oder ein Array aus Arrays sein (die
wiederum weitere Arrays enthalten können).
Ist 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.
Dies ist dazu gedacht, gültige Variablennamen zu ermöglichen, wenn die Daten später von PHP oder einer anderen CGI-Applikation dekodiert werden.
arg_separator
Das Trennzeichen für Argumente. Wenn nicht gesetzt oder null
, wird
arg_separator.output
verwendet, um die Argumente voneinander zu trennen.
encoding_type
Standardmäßig PHP_QUERY_RFC1738
.
Ist encoding_type
PHP_QUERY_RFC1738
, wird die Kodierung gemäß
» RFC 1738 und dem
application/x-www-form-urlencoded
-Medientyp
durchgeführt, was bedeutet, dass Leerzeichen als Pluszeichen
(+
) kodiert werden.
Ist encoding_type
PHP_QUERY_RFC3986
, wird die Kodierung gemäß
» RFC 3986 durchgeführt und
Leerzeichen werden mit einem Prozentzeichen (%20
)
kodiert.
Gibt einen URL-kodierten String zurück.
Version | Beschreibung |
---|---|
8.0.0 |
arg_separator ist nun nullable (akzeptiert den
null -Wert).
|
Beispiel #1 Einfache Verwendung von http_build_query()
<?php
$data = array(
'foo' => 'bar',
'baz' => 'boom',
'kuh' => 'milch',
'null' => null,
'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', null, '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&4=boom&kuh=milch&php=hypertext+processor meineVariable_0=foo&meineVariable_1=bar&meineVariable_2=baz&meineVariable_4=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_');
?>
Das obige Beispiel gibt Folgendes aus: (für bessere Lesbarkeit umbrochen!)
user%5Bname%5D=Bob+Smith&user%5Balter%5D=47&user%5Bgeschlecht%5D=M& user%5Bgeb%5D=5%2F12%2F1956&hobbies%5B0%5D=golf&hobbies%5B1%5D=opera& hobbies%5B2%5D=poker&hobbies%5B3%5D=rap&kinder%5Bbobby%5D%5Balter%5D=12& kinder%5Bbobby%5D%5Bgeschlecht%5D=M&kinder%5Bsally%5D%5Balter%5D=8 &kinder%5Bsally%5D%5Bgeschlecht%5D=F&flags_0=CEO
Hinweis:
Nur das numerische Indexelement im äußeren Array "CEO" erhält ein Präfix. Die anderen numerischen Indizes unterhalb von hobbies benötigen kein String-Präfix, 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