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.

War es hilfreich?

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!

Von der PHP-Handbuch: „PHP_EOL Die richtige 'End Of Line' Symbol für diese Plattform . Verfügbar seit PHP 4.3.10 und PHP 5.0.2" .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top