PHP Echo Zeilenumbrüche
Was ist der Unterschied zwischen \n und \r (ich weiß, es hat etwas zu tun mit OS), und was ist der beste Weg, um echo einen Zeilenumbruch, funktioniert cross-Plattform?
EDIT: In Reaktion auf Jarod, ich werde mit ths echo einen Zeilenumbruch in einem .txt-log-Datei, aber ich bin mir sicher, ich werde es auch in Zukunft für Sachen wie echo HTML-makup auf einer Seite.
Weiter unten meine Antwort, wie sind Sie mit dem echo würde die Ausgabe von php? Offensichtlich in einer web-Seite <br/> - tag definiert einen Zeilenumbruch, also ich nehme an, dies wird unterschiedlich verwendet?
InformationsquelleAutor PHLAK | 2008-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
\n
ist ein Linux/Unix-Zeilenumbruch.\r
ist ein klassisches Mac OS (nicht OS X) Zeilenumbruch. Mac OS X verwendet den oben genannten unix -\n
.\r\n
ist ein Windows-Zeilenumbruch.Ich in der Regel verwenden Sie einfach
\n
auf unsere Linux-Systeme und die meisten Windows-apps befassen sich mit, ok es trotzdem.Don ' T haben Zugang zu linux jetzt zu überprüfen, aber ich bin mir ziemlich sicher, dass das \r nicht richtig in linux, wenn Sie betrachtet es als text-Datei. Sollte Recht einfach sein, testen Sie die verschiedenen Optionen, wenn Sie brauchen, um zu sehen, wie Sie Aussehen.
Nein, es wird nicht gedruckt, für ein Höchstmaß an Kompatibilität, verwenden Sie \r\n
Nun, dass Mac OS X ist Unix, tut es mit \n?
gute Frage! Ich wunderte mich, dass ich mich aber nicht über ein Mac OS X zu testen.
InformationsquelleAutor Jarod Elliott
Verwenden Sie die
PHP_EOL
Konstante, die automatisch den korrekten Zeilenumbruch für das Betriebssystem, die PHP-Skript ausgeführt wird.Beachten Sie, dass diese Konstante deklariert ist seit PHP 5.0.2.
Für rückwärts Kompatibilität:
Beachten Sie, dass die Leistung ist nicht unbedingt geschickt, um das OS, auf dem PHP ausgeführt wird.
Diese Antwort muss so markiert werden, dass Sie die richtige Antwort. Ich entwickelte eine app und Teste es auf Hostmonster.com (Sie laufen mit RedHat-Linux) und dem client bereitgestellt, die code auf einem CentOS-box. In dev "\n" gerendert, ein Zeilenumbruch als erwartet; auf die CentOS-box ist es nicht. Sobald ich geändert, "\n" , PHP_EOL das Problem ging Weg, und der code funktioniert wie erwartet. Lektion gelernt: auch wenn die prod OS ist ein Derivat der dev-OS, und auch wenn "\n" sollte auf allen *nix-Boxen, wenn es unbedingt sein muss richtig umgesetzt werden, dann verwenden Sie immer PHP_EOL, nie ""\n"
Die, die kamen hier durch
preg_match
nicht zu erkennen, Zeile endet, ersetzen$
durch(?:\r\n|\r|\n|$)
(wo?:
ist eine non-capturing-regex-Gruppe).InformationsquelleAutor Andrew Moore
Jarod Antwort enthält die korrekte Verwendung von \r \n auf verschiedenen OS. Hier ist etwas Geschichte:
Die Terminologie "carriage return" und "line feed" stammt, wenn teletypes verwendet wurden anstelle von terminals mit monitor und Tastatur. Mit Bezug auf teletypes oder Schreibmaschinen, "carriage return" bedeutete, bewegen Sie den cursor und die Rückkehr in die erste Spalte von text, während "line feed" bedeutete, drehen Sie die Walze, um auf die folgende Zeile. Damals war die Unterscheidung sinnvoll. Heute sind die Kombinationen \n, \r, \r\n stehen für das Ende einer Textzeile sind völlig willkürlich.
InformationsquelleAutor Federico A. Ramponi
Keine Abwärtskompatibilität erforderlich für PHP_EOL auf PHP4.
Korrigieren müssen Moore ' s Aussage auf Konstante PHP_EOL Verfügbarkeit: "... deklariert ist seit PHP 5.0.2.".
Nein, es hat etwa seit PHP 4.3.10. Wer läuft noch etwas weniger als eine, die nicht sein sollte im biz jedenfalls. Heute sollte niemand mit nichts geringerem als PHP 5!
Aus dem PHP-manual: "PHP_EOL Die richtige" End-Of-Line' - symbol für diese Plattform. Verfügbar seit PHP 4.3.10 und PHP 5.0.2".
InformationsquelleAutor Chris Kunze