Tom: Zeilenumbrüche

Beitrag lesen

Hello,

die erzwungenen Zeilenumbrüche in einem Textfeld (Textarea) werden als \r\n (Windows) im Textstream gespeichert (wrap=soft ...)

Vor dem Abspeichern in der MySQL-Datenbank sollte man sie mit mysql_escape_string() maskieren.

Beim Wiederholen der Daten fällt die Maskierung automatisch fort (da sie in Wirklichkeit gar nicht abgespeichert wird, sondern nur für die Schnittstelle gedacht ist)

Gibt man diese Daten nun in einem Textfeld wieder aus, sollte man sie vorher auf jeden Fall mit htmlentities() oder wenigstens htmlspecialchars() behandeln. Die Zeilenumbrüche werden auch wieder dargestellt.

Stellt man die selben Daten nun im normalen HTML-Text dar, muss das für den Umbruch notwendige <br /> hinzugefügt werden. Das erfolgt z.B. durch die Funktion nl2br(). Die \r\n Zeichen werden dabei nicht entfernt, sondern durch ein nachfolgendes <br> (leider noch nicht <br />) ergänzt.

Die Reeihenfolge der Funktionen nl2br() und htmlentities() sollte daher auch klar sein: erst die html-Sonderzeichen ersetzen, dann das break einsstanzen:

$ausgabe = nl2br(htmlentities($datenbankwert));

Grüße

Tom