Hello,
danke für den Verweis! Mir sind zwar momentan die Unterschiede zwischen \r, \n und \r\n nicht _ganz_klar, aber nachdem ich jetzt mehrere Forumsbeiträge im Archiv gelesen habe, habe ich es so verstanden, daß php von sich aus nur ein \r dazuhängen würde für jeden Zeilenumbruch, den ein User in der Textarea macht, aber Windows noch ein \n dazugibt, weshalb somit dann bei jedem Zeilenumbruch ein \r\n steht. Um alle Eventualitäten abzudecken, wird bei dem angegebenen Beispiel sowohl \r, als auch \n und \r\n ersetzt. Wie gesagt, mir ist es noch nicht _ganz_ klar, aber ich verstehe den php-Code und verwende das ab jetzt so. Danke nochmals!
Es machen nicht Windows oder PHP, sondern es haben die Browser zu tun und zwar unabhängig von der Plattform, auf der sie laufen. Der Browser muss einen Zeilenumbruch in der Textarea mit "\r\n", also "0D 0A" in Hexadezimalschreibweise, signieren. Das ist die für HTML/HTTP geforderte Zeichenfolge.
Die Browser, die ich kenne, ersetzen aber unvollständige Zeilenumbrüche durch vollständige. Ein einzelnes "\n" wird also genauso durch ein "\r\n" erstezt, wie ein einzelnes "\r".
Um jetzt bei der Ersetzung in Deinem Script alle Zeilenumbrüche zu erwischen, musst Du also erst die vollständigen ersetzen und dann die eventuell noch vagabundiernden unvollständigen. Davon sollten allerdings bei funktionierenden Browsern gar keine vorhanden sein. Die Reihenfolge, ob dann erst "\n" erstezt wird oder erst "\r" sollte unerheblich sein.
Ein harzliches Glückauf
Tom vom Berg