molily: HTML und XHTML zusammen

Beitrag lesen

Hallo,

Wieso ersetzt du \n mit nl2br() durch <br />, um dann <br /> durch <br> zu ersetzen? Wieso nimmst du nicht einfach $string = str_replace("\n", '<br>', $string);

weil dann noch \r unberücksichtigt bleibt ;-)

Stimmt.

je nach system kann der zeilenumbruch als \n, \r oder auch \r\n dargestellt werden.

Wenn schon kompliziert, dann richtig: Zuerst einmal werden wahrscheinlich POST-Daten an das PHP-Script übergeben, die dann irgendwie serverseitig gespeichert werden (Dateien, Datenbank usw.). Browser müssen Zeilenumbrüche als \r\n senden, aber man sollte das Script freilich möglichst tolerant schreiben. Neuere PHP-Versionen Schreiben und Lesen Dateien ohne Änderung der Zeilenumbrüche, daher würde die HTTP-Eingabe direkt gespeichert, ausgelesen und wieder in die HTML-Seite geschrieben. Ob man die Zeilenumbrüche beim Speichern vereinheitlicht, bleibt einem überlassen, am Ende sollte ein str_replace oder preg_replace('/\r\n|\r|\n/', "<br>\n") aber ein eindeutiges Ergebnis haben (z.b. nur \n).

deshalb wird hier des öfteren empfohlen, gleich auf die hex-entsprechungen dieser zeichen abzufragen

Jetzt widersprichst du dir. Perl hat ein logisches Newline, PHP nicht. "\r\n" reicht in PHP (und in den dortigen regulären Ausdrücken) aus.

Mathias