Der Martin: der Input wird geändert beim schreiben in die Datenbank, bzw. aus der Datenbank

Beitrag lesen

Hallo,

Das ist ein Beispieltext der in die Datenbank soll.

$test=array(' ','ö','ä','ü','Ö','Ä','Ü','ß');
so könnte es
aussehen.

Ich übergebe ihn so in die Datenbank.

mysql_real_escape_string($string);

das ist soweit schon mal gut. Damit ist beim Weg in die DB hinein der Kontextwechsel berücksichtigt.

Wenn ich sie wieder auslese, behandele ich den String dann wie folgt:

nl2br(htmlspecialchars(stripslashes($string)))

Wenn du den Text wieder im HTML-Kontext ausgibst, ist htmlspecialchars() natürlich korrekt. Aber was willst du an der Stelle mit stripslashes()?

Doch leider ist kein Zeilenvorschub mehr vorhanden und auch zusätzlich solche Einblendungen \n, \r habe ich neu.

Die Steuerzeichen \r und \n sind Zeilenumbrüche. Und nl2br() ersetzt sie dann durch \r\n<br />, so dass nicht nur im Quelltext, sondern auch in der HTML-Ausgabe ein Zeilenumbruch zu sehen ist

Wie kann ich vorgehen um die Daten Korrekt wiederzugeben.

Als erstes würde ich an der Stelle mal stripslashes() entsorgen. Das sieht kaputt aus und passt an der Stelle nicht ins Konzept.

So long,
 Martin

--
Bei der Umsetzung von guten Ideen hapert es meist viel mehr an der Wolle als an der Könne.