Moin!
mit reumwandeln meinte ich eigentlich das Umwandeln in einen "richtigen" Zeilenumbruch, also \r\n... das geht naemlich nicht so ganz, zumindest der IE macht da dann 3 anstatt einem, 2 kommen von dem <br /> (hab das Problem bei einer Textarea gehabt... seitdem mach ichs wieder mit str_replace...)
Ich verstehe das Problem mit den Zeilenumbrüchen nicht.
Eine Entscheidung steht zu Beginn: Gibt der Benutzer HTML-Code ein oder nur simplen Text, der dann in HTML formatiert werden soll?
Wenn HTML-Code eingegeben wird, muß logischerweise dort, wo Zeilenumbrüche stehen sollen, "<br>" eingegeben werden - und das Problem der Zeilenumbruchswandlung existiert garnicht.
Wenn nur simpler Text eingegeben werden soll, dessen Zeilenumbrüche aber in HTML erhalten bleiben sollen, dann speichert man den eingegebenen Text sinnvollerweise in seiner Originalform irgendwo ab (also auf jeden Fall _ohne_ gewandelte Zeilenumbrüche!).
Wenn man dann Textausgabe realisieren will, wandelt man mit nl2br() die Zeilenumbrüche in <br> um, und alles ist gut.
Wenn man erneut eine Textarea befüllen will, läßt man die Umwandlung weg - man muß sogar eine ganz andere Umwandlung hinzufügen: Die HTML-Zeichen "<", ">" und "&" müssen maskiert werden! htmlspecialchars() erledigt das.
Und schon hat man eigentlich keine Probleme mehr - ich habe jedenfalls keine Probleme. Und ich hab' schon so manches Textarea-Feld befüllt und wieder entgegengenommen.
Der Vollständigkeit halber: stripslashes() ist auch eine wichtige Funktion, wenn man die Formularfelder nicht in eine Datenbank füllen, sondern direkt wieder ausgeben oder als Textdatei speichern will. Ansonsten hat man so häßliche Backslashes vor jedem einfachen und doppelten Anführungszeichen.
- Sven Rautenberg