Signatur
Beschreibung
rawurldecode() wandelt prozentcodierte Zeichenfolgen (z. B. %20, %2F) zurück in ihre ursprünglichen Zeichen. Die Funktion folgt dabei RFC 3986 und behandelt das Pluszeichen (+) nicht als Leerzeichen – es wird unverändert belassen. Dies unterscheidet sie von urldecode(), das + als Leerzeichen interpretiert.
Typischer Einsatz ist die Dekodierung von URL-Pfad-Segmenten, die mit rawurlencode() kodiert wurden, oder das manuelle Verarbeiten von URIs, bei denen eine RFC-3986-konforme Dekodierung erforderlich ist.
In modernen Anwendungen werden Pfadparameter oft bereits durch den Webserver oder das Framework dekodiert übergeben. rawurldecode() ist dennoch nützlich, wenn man rohe URI-Strings selbst parst oder wenn sichergestellt werden muss, dass + nicht fälschlicherweise als Leerzeichen interpretiert wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $string Pflicht | string | Der URL-kodierte Eingabestring, dessen Prozent-Sequenzen dekodiert werden sollen. |
Rückgabewert
%20 werden in die entsprechenden Zeichen umgewandelt; + bleibt unverändert.Beispiele
Einfaches Dekodieren eines URL-Pfads
<?php
$encoded = '/mein%20Verzeichnis/datei%2Bname.txt';
$decoded = rawurldecode($encoded);
echo $decoded;
Unterschied zwischen rawurldecode und urldecode beim Pluszeichen
<?php
$string = 'Hallo+Welt%21';
echo rawurldecode($string) . PHP_EOL; // + bleibt +
echo urldecode($string) . PHP_EOL; // + wird zu Leerzeichen
Dekodierung eines manuell zusammengesetzten URI-Pfads
<?php
// Pfadsegment aus HTTP-Request manuell verarbeiten
$requestUri = '/produkte/M%C3%B6bel%20%26%20Wohnen/Stuhl';
$parts = explode('/', $requestUri);
$decodedParts = array_map('rawurldecode', $parts);
print_r($decodedParts);
// Wichtig · Fallstricke
Sicherheitshinweis: Dekodierte Strings sollten niemals ungeprüft in Datenbankabfragen, Shell-Befehle oder HTML-Ausgaben eingebaut werden. Verwende nach dem Dekodieren stets geeignete Escape-Funktionen wie htmlspecialchars(), PDO::quote() oder Prepared Statements.
Doppelkodierung: Das zweifache Kodieren (z. B. %2520 statt %20) kann zu Sicherheitslücken führen, wenn Anwendungen und Webserver unterschiedliche Dekodierungsstufen durchführen. Prüfe, ob dein Input bereits teilweise dekodiert wurde, bevor du rawurldecode() anwendest.
Das Pluszeichen (+) wird von rawurldecode() nicht als Leerzeichen behandelt. Für Query-Strings aus HTML-Formularen (wo + ein Leerzeichen darstellt) ist urldecode() oder parse_str() die richtige Wahl.