de.comp.lang.php.* FAQ

7.5. Wie kann ich Zeilenumbrüche verarbeiten?

Keywords: String | Zeilenumbruch | Zeile | Enter

Antwort von Johannes Frömter

Die sogenannten "Zeilenumbrüche" sind im Prinzip ganz gewöhnliche Bytes wie ein A oder % auch - sie werden erst bei der Anzeige in einem Editor als Zeilenumbrüche dargestellt. Hässlicherweise haben sich für diesen Zweck unterschiedliche Zeichen (Bytes) etabliert: Windows verwendet \r\n, Unix \n und der Mac \r als "neue-Zeile-Zeichen". Dabei gilt:

Escape-  Hex-  ASCII-  Abkür-  Name/Bedeutung      Name/Bedeutung
Sequenz  Code  Code    zung    englisch            deutsch
-------  ----  ------  ------  ------------------  --------------
\r       0D    13      CR      carriage return     Wagenrücklauf
\n       0A    10      LF      line feed, newline  Zeilenvorschub
-------  ----  ------  ------  ------------------  --------------

Die Unterscheidung zwischen Wagenrücklauf und Zeilenvorschub rührt von den Zeilendruckern her, bei denen das zwei separate Steuersignale sind.

Die Escape-Sequenzen können in PHP direkt in Strings, die zwischen " (Anführungszeichen, double quotes) stehen, sowie in Regulären Ausdrücken verwendet werden. Ebenso kann man dort \x0D, \x0A etc. (hexadezimale Escape-Sequenzen) verwenden. Die ASCII-Codes kann man von der Funktion chr() umwandeln lassen.

Empfängt man Daten von unbekannten Clients, sollten verarbeitende Funktionen mit allen Varianten zurecht kommen; eine universelle Funktion zum Ersetzen von Zeilenumbrüchen durch Leerzeichen sieht z. B. so aus:

$string = preg_replace('/\r\n|\r|\n/', ' ', $string);

Valid HTML 4.01! Valid CSS!

7.5. Wie kann ich Zeilenumbrüche verarbeiten?
http://www.php-faq.de/q/q-string-zeilenumbruch.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team