Signatur
Beschreibung
parse_str() zerlegt einen URL-kodierten Abfrage-String (wie er etwa nach dem ? in einer URL vorkommt) in seine einzelnen Schlüssel-Wert-Paare und schreibt das Ergebnis in das übergebene Array $result. Die Funktion versteht dabei sowohl einfache Schlüssel (name=Max) als auch Array-Notation (farbe[]=rot&farbe[]=blau).
Typische Anwendungsfälle sind das manuelle Zerlegen von Query-Strings aus URLs, das Verarbeiten von POST-Körpern im Format application/x-www-form-urlencoded oder das Parsen von gespeicherten Such-/Filterparametern.
Seit PHP 7.2 ist die Verwendung ohne den zweiten Parameter ($result) nicht mehr erlaubt und erzeugt einen Fehler, da das frühere Verhalten (Erstellen von Variablen im lokalen Scope) als unsicher gilt und seit PHP 8.0 vollständig entfernt wurde. Der zweite Parameter ist daher zwingend anzugeben.
Zu beachten ist, dass Punkte (.) und Leerzeichen in Schlüsselnamen automatisch in Unterstriche (_) umgewandelt werden, da PHP-Variablennamen keine Punkte enthalten dürfen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der zu verarbeitende URL-kodierte Abfrage-String, z. B. name=Max&alter=30. |
|
| $result Pflicht | array | Die Variable, in die die geparsten Schlüssel-Wert-Paare als assoziatives Array geschrieben werden. Wird als Referenz übergeben. |
Rückgabewert
$result geschrieben.Beispiele
Einfachen Query-String parsen
<?php
$queryString = 'name=Max+Mustermann&alter=30&stadt=Berlin';
parse_str($queryString, $params);
echo $params['name']; // Max Mustermann
echo $params['alter']; // 30
echo $params['stadt']; // Berlin
print_r($params);
Array-Notation und URL-Kodierung verarbeiten
<?php
$queryString = 'farbe[]=rot&farbe[]=blau&farbe[]=gr%C3%BCn&filter%5Bpreis%5D=100';
parse_str($queryString, $params);
print_r($params['farbe']);
echo $params['filter']['preis']; // 100
Query-String aus einer URL extrahieren und parsen
<?php
$url = 'https://example.com/suche?q=PHP+Kurs&seite=2&sortierung=preis';
$parts = parse_url($url);
parse_str($parts['query'], $params);
echo $params['q']; // PHP Kurs
echo $params['seite']; // 2
echo $params['sortierung']; // preis
// Wichtig · Fallstricke
Sicherheitshinweis: Vertrauen Sie niemals blind den geparsten Werten aus Benutzereingaben. Validieren und filtern Sie alle Werte aus $result, bevor Sie sie weiterverwenden – insbesondere vor SQL-Abfragen oder der Ausgabe in HTML (XSS-Schutz).
Schlüssel-Umbenennung: Punkte und Leerzeichen in Schlüsselnamen werden automatisch durch Unterstriche ersetzt. So wird mein.key=1 zu $result['mein_key']. Dies kann zu unerwartetem Verhalten führen, wenn gezielt auf solche Schlüssel zugegriffen wird.
Veraltetes Verhalten: In PHP-Versionen vor 7.2 konnte parse_str() ohne zweiten Parameter aufgerufen werden und erstelle dann Variablen direkt im lokalen Scope – ein erhebliches Sicherheitsrisiko. Dieses Verhalten wurde in PHP 7.2 als deprecated markiert und in PHP 8.0 vollständig entfernt.