Start · Sprachen · PHP · Referenz · rawurldecode

rawurldecode

Funktion

Dekodiert einen nach RFC 3986 URL-kodierten String, wobei Prozent-Sequenzen wie <code>%20</code> in die entsprechenden Zeichen umgewandelt werden.

seit PHP 4.0.0 Kategorie: http

Signatur

rawurldecode(string $string): string

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

Typ
string
Beschreibung
Gibt den dekodierten String zurück. Prozent-Sequenzen wie %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;
/mein Verzeichnis/datei+name.txt

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
Hallo+Welt! Hallo Welt!

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);
Array ( [0] => [1] => produkte [2] => Möbel & Wohnen [3] => Stuhl )

// 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.