http://www.tiptom.ch/homepage/
- Homepage-Tips von Thomas Lüthi
Sie sind hier: tiptom.ch > Homepage-Tips > FAQ
Betriebssystem | Name | ASCII dezimal | hexadezimal | oktal | PHP |
---|---|---|---|---|---|
Windows | CR LF (Carriage Return, Line Feed) | 13 10 | 0D 0A | 15 12 | \r\n |
Mac Classic (bis OS 9) | CR (Carriage Return) | 13 | 0D | 15 | \r |
Unix, Linux, Mac ab OS X | LF (Line Feed) | 10 | 0A | 12 | \n |
Ein Zeilenumbruch im HTML-Quellcode wird bei der Anzeige
normalerweise wie ein Leerzeichen behandelt und erzeugt
somit keinen sichtbaren Zeilenumbruch. Mehrere Zeilenumbrüche
und Leerzeichen werden normalerweise zu einem einzigen
Leerzeichen zusammengefasst.
Das ist so definiert in der HTML-4.01-Specification
im Abschnitt zu White Space
http://www.w3.org/TR/html401/struct/text.html#whitespace
(Nur zwischen <pre>
und </pre>
gelten andere Regeln - die meisten Browser verhalten sich
dort so: Alle Leerzeichen werden angezeigt,
umgebrochen wird nur dort, wo auch im HTML-Quelltext
ein Zeilenumbruch steht, und alle Buchstaben sind gleich breit.)
Um einen sichtbaren Zeilenumbruch zu kriegen, schreibt man
in HTML: <br>
in XHTML: <br />
Die Zuordnung in obiger Tabelle ("\n"
<=> LF, "\r"
<=> CR)
steht so im
PHP-Manual, Abschnitt zu Strings
http://www.php.net/manual/de/language.types.string.php#language.types.string.syntax.double
Diese Angaben betreffen vermutlich nur den
(üblichen) Fall, dass man mit einem PHP-Skript Text erzeugt
(z.B. HTML-Quelltext), der direkt an den Browser
ausgegeben wird.
In dem Fall reicht es normalerweise, "\n"
zu schreiben
(N.B. Es müssen doppelte Anführungszeichen sein.)
Anders sieht es aus, wenn man mit einem PHP-Skript
Dateien liest und schreibt. Dann kann
PHP den String "\n"
je nach Konfiguration auch in den Zeilenumbruch
des betreffenden Betriebssystems umwandeln.
Detaillierte Informationen siehe
PHP-Manual zu fopen()
http://www.php.net/manual/en/function.fopen.php
Wenn man also sicher sein will, dass ein Zeilenumbruch
z.B. im Windows-Format "CR LF" gespeichert wird,
muss man ihn über die numerischen Codes beschreiben,
z.B. mit chr(13).chr(10)
,
hexadezimal als "\x0D\x0A"
oder oktal als "\15\12"
.
In PHP gibt es die praktische Funktion nl2br()
(new line to break), die alle Vorkommen von "\n"
durch "<br />\n"
ersetzt.
Um in JavaScript-Ausgaben - z.B. bei alert()
- einen
Zeilenumbruch zu erzeugen, reicht meistens "Backslash n":
"\n"
Auch in Perl bewirkt "\n"
offenbar unter
Umständen, dass ein Zeilenumbruch im Stil des jeweiligen
Betriebssystems erzeugt wird. Das kann also
"CR LF", "CR" oder "LF" sein.
Wenn man mit Perl Dateien bearbeitet und sicher sein will, dass diese auf einem bestimmten Betriebssystem lesbar sind, ist es demzufolge - wie bei PHP - am sichersten, die Zeilenumbrüche mit ihren numerischen Codes zu codieren.
Im Februar 2004 gab es im Forum zu SelfHTML eine Diskussion zum Thema:
"(PROGRAMMIERTECHNIK) \r, \n oder \r\n ?"
http://forum.de.selfhtml.org/archiv/2004/2/71954/
Auf diesen FAQ-Eintrag verlinken:
Wie wird ein Zeilenumbruch codiert?
http://www.tiptom.ch/homepage/faq.html?q=zeilenumbruch
Alle Rechte beim Autor: Thomas Lüthi. E-Mail: info@tomogramm.ch
Zuletzt bearbeitet am 10.01.2020
URL dieser Seite: http://www.tiptom.ch/homepage/faq.html