
Sonderzeichen und Leerzeichen in URLs sollten immer codiert werden, um eventuelle Fehler beim Aufruf der URL zu vermeiden. Dies kann nötig sein, um Strings wie Variablen oder Parameter an die URL übergeben zu können, welche Sonderzeichen enthalten. PHP stellt dazu zwei Funktionen zur Verfügung:
urlencode und
rawurlencode.
Der wesentliche Unterschied zwischen den beiden Funktionen besteht darin, dass bei
urlencode das Leerzeichen als Plus
(+) codiert wird, während
rawurlencode das klassische
%20 nach RFC 3986 verwendet. Außerdem verschlüsselt
rawurlencode seit PHP 5.3 die Tilde
(~) - im Gegensatz zu
urlencode - nicht mehr. Welcher Befehl eingesetzt wird, hängt vom Einsatzzweck ab, im Zweifelsfall bietet sich die
raw-Variante an.
Die Anwendung ist denkbar einfach:
<?php$string = "parameter mit Sonderzeichen / <>";$neuer_string = urlencode($string);echo $neuer_string;?>
Der codierte String mit
urlencode ...
parameter+mit+Sonderzeichen+%2F+%3C%3E
... und mit
rawurlencode:
parameter%20mit%20Sonderzeichen%20%2F%20%3C%3E
Natürlich lassen sich codierte Strings auch wieder
decodieren. Dies geschieht - welche Überraschung! - mit
urldecode bzw.
rawurldecode:
<?php$codierter_string = "parameter+mit+Sonderzeichen+%2F+%3C%3E";$decodierter_string = urldecode($codierter_string);echo $decodierter_string;?>
Ergibt wieder die ursprüngliche Zeichenfolge:
parameter mit Sonderzeichen / <>
Weiterführende Links:
php.net: urlencode
php.net: rawurlencode