http_build_query
(PHP 5, PHP 7, PHP 8)
http_build_query — Liefert einen URL-kodierten Query-String
Beschreibung
array|object
$data
,string
$numeric_prefix
= "",?string
$arg_separator
= null
,int
$encoding_type
= PHP_QUERY_RFC1738
): string
Erstellt einen URL-kodierten Query-String aus einem gegebenen assoziativen (oder indexierten) Array.
Parameter-Liste
-
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
-
arg_separator.output wird verwendet, um die Argumente voneinander zu trennen, kann aber durch die Angabe dieses Parameters geändert werden.
-
encoding_type
-
Standardmäßig
PHP_QUERY_RFC1738
.Ist
encoding_type
PHP_QUERY_RFC1738
, wird die Kodierung gemäß » RFC 1738 und demapplication/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.
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',
'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_');
?>
Ausgabe: (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
Siehe auch
- parse_str() - Überträgt einen String in Variablen
- 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