problem mit htmlspecialchars
Marv
- php
Guten Tag,
habe mir gerade eine kleine Funktion geschrieben, die <> in () wandelt und die zeichen " und ' dank htmlspecialchars verändern soll. Das tut die Funktion auch fehlerfrei. Doch leider setzt er vor die veränderten werte " und ' also vor " und ' ein ''. Meine Frage also, warum wird dieses \ vor die geänderten Zeichen gesetzt?
function deleteCode()
{
while(list($key,$val) = each($_POST))
{
$_POST[$key] = str_replace("(", "{", $val);
$_POST[$key] = str_replace(")", "}", $_POST[$key]);
$_POST[$key] = htmlspecialchars($_POST[$key], ENT_QUOTES);
}
}
deleteCode();
Doch leider setzt er vor die veränderten werte " und ' also vor " und ' ein ''. Meine Frage also, warum wird dieses \ vor die geänderten Zeichen gesetzt?
while(list($key,$val) = each($_POST))
Das hat nichts mit htmlspecialchars() zu tun, dafür ist die Formularverarbeitung von PHP verantwortlich, d.h. Du bekommst die Rückstriche schon in $_POST geliefert.
Ursache dafür ist eine eingeschaltete Option namens magic_quotes_gpc. Entweder diese ausschalten oder die Funktion stripslashes() auf die Formulardaten anwenden.
es funzt, was soll ich euch beiden sagen? danke! :-)
hi,
Doch leider setzt er vor die veränderten werte " und ' also vor " und ' ein ''. Meine Frage also, warum wird dieses \ vor die geänderten Zeichen gesetzt?
Vermutlich steht es schon vorher drin:
php-faq.de 16.13. Wieso wird aus " plötzlich " und wie geht das wieder weg?
gruß,
wahsaga