Function.urlencode
Aus PHP-Wiki
urlencode — URL-kodiert einen String
Inhaltsverzeichnis |
Beschreibung
string urlencode ( string $str )
Die Funktion ist geeignet, wenn ein String innerhalb eines Queryparts eines
URL verwendet werden soll, und man einen komfortablen Weg benötigt, Variablen
an die nächste Seite zu übergeben.
Parameter-Liste
- str
- Der zu kodierende String.
Rückgabewerte
Gibt einen String zurück, in dem alle nicht-alphanumerischen Zeichen außer
-_. durch ein Prozentzeichen (%)
gefolgt von zwei Hexadezimalwerten und Leerzeichen durch ein Plus
(+) ersetzt werden. Das Encoding geschieht auf dem
gleichen Wege, wie auch durch ein WWW-Formular gepostete Daten kodiert
werden - das entspricht der Auszeichnung des Dateityps
application/x-www-form-urlencoded. Diese Auszeichnung
differiert von der Kodierung nach [RFC 1738]
(siehe auch rawurlencode()) dadurch, dass aus historischen
Gründen das Leerzeichen als Pluszeichen (+) kodiert wird.
Beispiele
#1 urlencode()
<?php echo ''; ?>
=== #2 urlencode() und htmlentities()===
<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar); echo ''; ?>
Anmerkungen
Hinweis:
Seien Sie vorsichtig beim Umgang mit Variablen, die HTML-Entities enthalten
könnten. Angaben wie &, © und £ werden vom Browser
geparst und die eigentliche Entität wird anstelle des gewünschten
Variablennamens verwendet. Dies ist eine naheliegende Schwierigkeit, über
die das W3C bereits seit Jahren informiert. Die entsprechende Referenz
finden Sie hier: [http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2].
PHP unterstützt den Austausch des vom W3C empfohlenen Argument-Trenners
Semikolon durch einen selbstgewählten Trenner über die
arg_separator-Direktive in der php.ini. Leider senden die meisten
User-Agents Formulardaten nicht im standardkonformen semikolongetrennten
Format. Ein möglicher Weg, mit diesem Problem umzugehen, ist die Verwendung
von & anstelle von & als Trennzeichen. Sie müssen dafür nicht
die php.ini-Direktive arg_separator verändern. Belassen Sie sie als &,
und verwenden Sie statt dessen für Ihre URLs die Funktionen
htmlentities() oder htmlspecialchars().