PHP Echo Zeilenumbrüche
-
05-07-2019 - |
Frage
Was ist der Unterschied zwischen \ n und \ r (Ich weiß, dass es etwas mit O zu tun hat), und was ist der beste Weg, um einen Zeilenumbruch echo, die Cross-Plattform funktionieren?
EDIT: Als Reaktion auf Jarod, werde ich einen Zeilenumbruch in einer TXT-Protokolldatei mit ths sein Echo, obwohl ich sicher bin, werde ich es in Zukunft verwenden für Dinge wie Echo HTML makup auf einer Seite.
Lösung
-
\n
ist ein Linux / Unix Zeilenumbruch. -
\r
ist ein klassischer Mac OS (nicht-O X) Zeilenumbruch. Mac OS X verwendet die oben Unix\n
. -
\r\n
ist ein Windows-Zeilenumbruch.
Normalerweise verwende ich nur \n
auf unseren Linux-Systemen und die meisten Windows-Anwendungen mit ihnen umgehen ok trotzdem.
Andere Tipps
Mit der PHP_EOL
Konstante, die automatisch auf den richtigen Zeilenumbruch für das Betriebssystem festgelegt ist, dass der PHP-Skript ausgeführt.
Beachten Sie, dass diese Konstante seit PHP 5.0.2 deklariert wird.
<?php
echo "Line 1" . PHP_EOL . "Line 2";
?>
Für die Rückwärtskompatibilität:
if (!defined('PHP_EOL')) {
switch (strtoupper(substr(PHP_OS, 0, 3))) {
// Windows
case 'WIN':
define('PHP_EOL', "\r\n");
break;
// Mac
case 'DAR':
define('PHP_EOL', "\r");
break;
// Unix
default:
define('PHP_EOL', "\n");
}
}
Jarods Antwort enthält die korrekte Verwendung von \ r \ n auf verschiedenen Betriebssystemen. Hier einige Geschichte:
- \ r oder die ASCII-Zeichen mit Dezimal-Code 13, genannt CR nach "Wagenrücklauf".
- \ n oder die ASCII-Zeichen mit Dezimal-Code 10 wird "Newline" genannt, oder LF nach "Zeilenvorschub".
Der Begriff „Carriage Return“ und „Zeilenvorschub“ geht zurück auf, wenn Fernschreiber anstelle von Terminals mit Monitor und Tastatur. Mit Bezug auf Fernschreiber oder Schreibmaschinen, „carriage return“ gemeint, um den Cursor zu bewegen und an der ersten Spalte der Text Rückkehr, während „Zeilenvorschub“ soll die rotierende Walze auf die folgende Zeile zu erhalten. Zu dieser Zeit machte Sinn der Unterscheidung. Heute sind die Kombinationen \ n \ r \ r \ n das Ende einer Textzeile darstellen, sind vollkommen willkürlich.
Keine Abwärtskompatibilität notwendig für PHP_EOL auf PHP4.
Need Moores Aussage über konstant PHP_EOL Verfügbarkeit zu korrigieren. "... erklärt wird seit PHP 5.0.2"
Nein, es gibt es schon seit PHP 4.3.10. Wer noch ist etwas kleiner als das, laufen sollte sowieso nicht in biz sein. Ab heute sollte niemand etwas wurde mit weniger als PHP 5!