Chris: Zeileumbruch in PHP aus MySQL

Beitrag lesen

Hallo,

zum Abspeichern in der MySQL-Tabelle musst Du erstmal die passende Maskierung verwendet haben. Wenn PHP selbstständig Backslashes eingefügt hat (siehe get_magic_quotes_gpc() ), dann musst Du die erstmal wieder entfernen. Und vor der Übergabe des Textes an das SQL-Statement muss dieser mittels mysql_real_escape_string() maskiert werden.

Nur so werden die Zeilenschaltungen vernünftig abgespeichert.

Wenn Du sie dann wieder herausholst, sind die Maskierungen wieder verschwunden, da sie nur für die Schnittstelle gelten, und von dieser automatisch beim Einfügen der Daten entfernt wurden.

Um den Text dann auszugeben, musst Du ihn entsprechend des Kontextes aufbereiten. In einer Textarea also mit

htmlentities($text,ENT_QUOTES)

und für die Darstellung im normalen HTML-Kontext

nl2br(htmlentities($text,ENT_QUOTES))

So müsste es dann klappen.
Einrückungen mittels Leerzeichen, die bei der Eingabe in der textarea eingegeben wurden, sind nun noch verschwunden. Wenn es darauf ankommt, diktengleichen Text auszugeben, benutzt Du anstelle des nl2br() lieber ein

echo "<pre>\n";
  echo htmlentities($text,ENT_QUOTES)."\n";
  echo "</pre>\n";

Das sollte als Anregung erstmal genügen.

LG
Chris