JavaScript: urlencode


In HTML wird ein Schalter definiert, der beim Klicken die Datei adresse.php mit dem Parameter name und einem Wert öffnet. Der Wert steht in der Variablen $vorname.

<?php
$vorname="Hans";
echo "<input type='button' onclick=window.open('adresse.php?name=" . $vorname . "') value='Hier klicken'><br>";
?>

Enthält die Variable ein Leerzeichen, dann kommt es in diesem Fall zu einem Fehler, da das Leerzeichen als Trennzeichen interpretiert wird.

<?php
$vorname="Hans Peter";
echo "<input type='button' onclick=window.open('adresse.php?name=" . $vorname . "') value='Hier klicken'><br>";
?>

Der Browser übersetzt diesen PHP Code in:

urlencode

Wer sich den Code genau anschaut, dem wird auffallen, dass die Attribute innerhalb des HTML Tags input in einfachen Anführungszeichen stehen - bis auf das Attribut onclick. Hier können die einfachen Anführungszeichen nicht benutzt werden, die innerhalb des windows.open Aufrufs einfache Anführungszeichen benötigt werden.

Das Problem mit dem Leerzeichen in der Variablen kann mit der Funktion urlencode umgangen werden.

<?php
$vorname="Hans Peter";
echo "<input type='button' onclick=window.open('adresse.php?name=" . urlencode($vorname) . "') value='Hier klicken'><br>";
?>

urlencode ersetzt das Leerzeichen durch ein Pluszeichen. Im aufrufenden Programm wird das Pluszeichen automatisch wieder in ein Leerzeichen verwandelt.

Dieses Problem kann umgangen werden, wenn der HTML Code nicht innerhalb des PHP Codes erzeugt wird:

<?php
$vorname="Hans Peter";
?>
<input type="button" onclick="window.open('adresse.php?name=<?php echo $vorname;?>')" value="Hier klicken"><br>";


Neben der Ersetzung des Leerzeichens mit einem Pluszeichen werden alle nicht-alphanumerischen Zeichen (Ausnahmen: -_.) durch ein Prozentzeichen (%) gefolgt von zwei Hexadezimalwerten ersetzt.