Hallo zurück,
Nun, ich glaube hier liegt ein Missverständnis vor.
Die Daten gebe ich wie sie vom User kommen in die DB.
Genau da liegt der erste hase im Pfeffer. Die daten vor der Übergabe an MySQL immer erst durch mysql_escape_string() schicken, wenn Dir Deine Datenbank lieb ist.
Erst beim Auslesen werden \n und \r mit HTML Tags bzw. durch nichts ersetzt.
Ich mache es immer so:
$bla = str_replace("\r", "", $bla);
$bla = str_replace("\n", "<br />", $bla);
Ich würde es so machen:
$bla = str_replace("\r\n", "<br />", $bla);
$bla = str_replace("\r", "<br />", $bla);
$bla = str_replace("\n", "<br />", $bla);
Dann werden die Zeilenumbrüche immer ersetzt, so wie sie sollen.
Windows-Browser sind übrigens so gemein und ersetzen bei der Datenaufbereitung ein einzelnes \r oder \n automatisch durch ein \r\n
Wenn man die Daten (aus einer Textarea) dann wieder zum Server sendet, steht auf jeden Fall \r\n drin.
Kannst ja mal schauen, wie man das beweisen kann.
nl2br() verwende ich schon deshalb nicht, weil das <br> statt <br /> schreibt, ich möchte aber XHTML Konform bleiben.
Ich meine, das kann man einstellen
Was mich jetzt nur noch interessieren würde: da ich die \r durch kein <br /> ersetze, wird die Seite auf einem Mac also falsch dargestellt.
Ich würde immer mit \r\n zurückübersetzen, da man ja nicht sicher weiß, was für ein Client auf Antwort wartet.
Grüße
Tom