Slash nach urldecode
Takahe
- php
Hallo,
ich habe (wieder mal) ein kleines Problem. Ich versuche mittels PHP, eine Variable angehängt an einer URL zu übergeben. Da die Variable Text enthält, verwende ich urlencode() zum übergeben und urldecode() beim auslesen der Variable. Klappt auch alles wunderbar.
Bei Auslesen der Variable gibt es dann allerdings ein Problem. Wenn die Variable Anführungsstriche enthälte, wird diesen automatisch ein Slash vorangestellt (z.B. "Testvariable"), also die typische PHP-Maskierung.
Kann mir jemand sagen, wie ich diese Slashes wieder wegbringe?
Viele Grüsse
Takahe
Hallo,
ich habe (wieder mal) ein kleines Problem. Ich versuche mittels PHP, eine Variable angehängt an einer URL zu übergeben. Da die Variable Text enthält, verwende ich urlencode() zum übergeben und urldecode() beim auslesen der Variable. Klappt auch alles wunderbar.
Bei Auslesen der Variable gibt es dann allerdings ein Problem. Wenn die Variable Anführungsstriche enthälte, wird diesen automatisch ein Slash vorangestellt (z.B. "Testvariable"), also die typische PHP-Maskierung.
Kann mir jemand sagen, wie ich diese Slashes wieder wegbringe?
mit $string = str_replace("\"",""",$string);
gruss
bjoern
Hallo Björn,
super, das funktioniert! Ich verstehe jetzt nur nicht ganz wieso...
Warum stehen im zu ersetzenden Teilstring drei Slashes? Einer, der ersetzt werden soll, einer zum maskieren des Anführungszeichens, und der dritte???
Auf alle Fälle schon mal vielen Dank für Deine Hilfe
Hallo,
ich habe (wieder mal) ein kleines Problem. Ich versuche mittels PHP, eine Variable angehängt an einer URL zu übergeben. Da die Variable Text enthält, verwende ich urlencode() zum übergeben und urldecode() beim auslesen der Variable. Klappt auch alles wunderbar.
Bei Auslesen der Variable gibt es dann allerdings ein Problem. Wenn die Variable Anführungsstriche enthälte, wird diesen automatisch ein Slash vorangestellt (z.B. "Testvariable"), also die typische PHP-Maskierung.
Kann mir jemand sagen, wie ich diese Slashes wieder wegbringe?
mit $string = str_replace("\"",""",$string);
gruss
bjoern
hi,
mit $string = str_replace("\"",""",$string);
Warum stehen im zu ersetzenden Teilstring drei Slashes? Einer, der ersetzt werden soll, einer zum maskieren des Anführungszeichens, und der dritte???
der erste backslash ist zum maskieren des zweiten. der zweite ist der backslash im string. und der dritte ist zum maskieren des anführungszeichens.
Auf alle Fälle schon mal vielen Dank für Deine Hilfe
null problemo.
grüssle
bjoern
Hallo,
ich habe (wieder mal) ein kleines Problem. Ich versuche mittels PHP, eine Variable angehängt an einer URL zu übergeben. Da die Variable Text enthält, verwende ich urlencode() zum übergeben und urldecode() beim auslesen der Variable. Klappt auch alles wunderbar.
Du brauchst urldecode() nicht. Das dekodiert sich schon durch PHP von selbst.
Bei Auslesen der Variable gibt es dann allerdings ein Problem. Wenn die Variable Anführungsstriche enthälte, wird diesen automatisch ein Slash vorangestellt (z.B. "Testvariable"), also die typische PHP-Maskierung.
Kann mir jemand sagen, wie ich diese Slashes wieder wegbringe?
stripslashes() heißt die Funktion, die genau das macht.
Der Grund dafür, dass Slashes eingebaut werden: Sehr häufig werden diese Daten in Datenbanken geschrieben. Die SQL-Anweisungen werden dabei als String zusammengesetzt und dann der Datenbank übergeben:
$sql="INSERT INTO tabelle (spalte1, spalte2) VALUES ('$wert1','$wert2')";
Wenn die Variablen $wert1 und $wert2 allerdings einfache Anführungszeichen enthalten, entsteht Chaos:
$wert1="Wie geht's?";
$wert2="Ganz gut";
$sql="INSERT INTO tabelle (spalte1, spalte2) VALUES ('$wert1','wert2')";
Führt zu folgendem String:
$sql="INSERT INTO tabelle (spalte1, spalte2) VALUES ('Wie geht's?','Ganz gut')";
Und da ist ein Anführungszeichenfehler, den man durch einen Backslash verhindern kann.
Deshalb Faustregel: Daten, die direkt aus der URL oder einem Formular wieder ausgegeben werden sollen, immer mit stripslashes() bearbeiten. Daten aus der Datenbank verlieren durch das Speichern und Auslesen ihre Backslashes automatisch - da braucht man dann nichts mehr zu machen.
- Sven Rautenberg