urlencode

(PHP 4, PHP 5, PHP 7, PHP 8)

urlencodeURL-kodiert einen String

Beschreibung

urlencode(string$string): string

Diese Funktion ist nützlich als einfache Möglichkeit, eine Zeichenkette zu kodieren, die im Abfrageteil einer URL zur Übergabe von Variablen an die nächste Seite verwendet werden soll.

Parameter-Liste

string

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 unterscheidet sich von der Kodierung nach » RFC 3986 (siehe auch rawurlencode()) dadurch, dass aus historischen Gründen das Leerzeichen als Pluszeichen (+) kodiert wird.

Beispiele

Beispiel #1 urlencode()-Beispiel

<?php
$userinput
= 'Data123!@-_ +';
echo
"BenutzerEingabe: $userinput\n";
echo
'<a href="mycgi?foo=', urlencode($userinput), '">';
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

BenutzerEingabe: Data123!@-_ + <a href="mycgi?foo=Data123%21%40-_+%2B">

Beispiel #2 urlencode() und htmlentities()-Beispiel

<?php
$foo
= 'Data123!@-_ +';
$bar = "Nicht derselbe Inhalt wie $foo";
echo
"foo: $foo\n";
echo
"bar: $bar\n";
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo
'<a href="mycgi?' . htmlentities($query_string) . '">';
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

foo: Data123!@-_ + bar: Nicht derselbe Inhalt wie Data123!@-_ + <a href="mycgi?foo=Data123%21%40-_+%2B&amp;bar=Not+the+same+content+as+Data123%21%40-_+%2B">

Anmerkungen

Hinweis:

Seien Sie vorsichtig beim Umgang mit Variablen, die HTML-Entities enthalten könnten. Angaben wie &amp, &copy und &pound 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 &amp; 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().

Siehe auch

To Top