Marv: problem mit htmlspecialchars

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 &quot; und &#039; 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();

--
mfg
  1. Doch leider setzt er vor die veränderten werte " und ' also vor &quot; und &#039; 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.

    1. es funzt, was soll ich euch beiden sagen? danke! :-)

      --
      mfg
  2. hi,

    Doch leider setzt er vor die veränderten werte " und ' also vor &quot; und &#039; 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

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }