htmlspecialchars Problem mit Ausgabe

WACSF

Erfahrenes Mitglied
Guten Tag allerseits.

Ich versucher gerade eine von einem Formular übergebene Variable, die Sonderzeichen beinhaltet mit "htmlspecialchars" zu "konvertieren".

PHP:
$text = htmlspecialchars($variable_mit_sonderzeichen, ENT_QUOTES); //damit " und ' umgewandelt werden.
echo $text;
Nur leider erscheint nicht das umgewandelte, sondern immer der uhrsprünglich eingegebene Text.

Mal angenommen ich gebe folgendes ein: <TEST>
Dann müsste doch folgendes rauskommen: &ltTEST&gt

Und das wiederum sollte man doch mit einem echo ausgeben können, oder? Kann es sein, dass meine PHP Version zu alt ist, oder an wo liegt der Fehler bei mir.

Ich wäre für Hilfe sehr dankbar,

WACSF
 
hmmm....

soweit ich weiß kannst du das ENT_QUOTES weglassen, da es nur bewirkt, dass einfache und doppelte Anführungszeichen umgebwandelt werden. Hat also nix mit < und > zu tun.
http://www.selfphp.de schreibt dazu folgendes:
Der zweite Parameter (quote_style) ist
optional und erst ab der Version 3.0.17 bzw. 4.0.3 verfügbar. Dieser bewirkt, dass
Anführungszeichen mit berücksichtigt werden. Standardmäßig ist der Wert
ENT_COMPAT aktiviert. Falls Sie eine vollständige Umwandlung der HTML-
Zeichen benötigen, so nutzen Sie die Funktion htmlentities().

Wenns alles nichts hilft mach es doch etwas umständlicher. Lege dir eine Datenbank mit den Sonderzeichen an und erstetze mittels den einträgen in der datenbank vor dem schreiben die Sonderzeichen durch str_replace()

würde dann wie folgt aussehen:

$variable_ohne_sonderzeichen = str_replace("<","&lt",$variable_mit_sonderzeichen);

anstelle der datenbank, kannst du dir die sonderzeichen auch in ein/zwei arrays schreiben die dann mit einer for schleife durchlaufen werden. Dann sieht das so aus:

$array1 = array("<",">"..........);
$array2 = array("&lt","&gt".........);
$variable = $variable_mit_sonderzeichen
for($n=0;$n<count($array1);$n++)
{
$variable = str_replace($array1[$n],$array2[$n],$variable);
}
 
Zurück