Johannes Zeller: Zeilenumbrüche nach bestimmten Elementen per RegEx entfernen

Beitrag lesen

Hallo Andy,

Aber: Man muss sich im Klaren sein, wir reden über Internetanwendungen, da darf es eigentlich sowas wie Betriebssystemabhängige Zeilenumbrüche gar nicht geben, soll heißen, dem Browser muss es egal sein, ob da \r\n oder \n steht, er hat im Quelltext gefälligst einen Zeilenumbruch anzuzeigen! Und sagen wir es kurz ein einzelnes \n ist immer noch ein Byte kürzer als ein \r\n! :-)

Aber zumindest in HTTP wird CRLF also \r\n als Ende einer Zeile definiert: http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2. Aber wie auch sonst gilt hier wieder dieser Grundsatz der Netzwerk-Programmierung: »be liberal in what you accept, conservative in what you send.«

In diesem Beispiel also: Sende \r\n als Zeileende aber akzeptiere auch die anderen Varianten.

Und ansonsten könnte man sich noch eine Ersetzungsvariante überlegen, die ein \r und ein \r\n in ein \n umwandelt. Wollte es halt einfach halten.

Mit str_replace(array("\r\n","\r"), "\n", $text); dürftest du das gewünschte Ergebnis erzielen.

(*) Hier wäre natürlich ein Erfahrungsbericht nicht verkehrt. Was schicken Mac-Browser an den Webserver? Doch nur ein \r?

Zumindest ab Mac OS X, das ja ein Unix ist, wird intern auch \n verwendet.

Schöne Grüße,

Johannes

--
ie:% fl:( br:< va:) ls:[ fo:) rl:) n4:& ss:| de:] js:| ch:} sh:) mo:} zu:)