Wann verwende ich die PHP-Konstante „PHP_EOL“?

Lesezeit: 8 Minuten

Wann verwende ich die PHP Konstante „PHP EOL
Christian Oudard

Wann ist es eine gute Idee zu verwenden PHP_EOL?

Ich sehe das manchmal in Codebeispielen von PHP. Behandelt dies DOS/Mac/Unix-Endzeilenprobleme?

  • Ich denke, die positiv bewerteten Antworten auf dieser Seite enthalten viele irreführende Ratschläge. Wenn Sie ein Skript auf zwei verschiedenen Plattformen ausführen und dann die Ausgabe oder die generierten Daten (Protokolldateien, HTML-Seite, Datenbankeinträge usw.) vergleichen, führt PHP_EOL zu einer Nichtübereinstimmung im Diff. In den meisten Fällen ist dies nicht das, was Sie wollen.

    – Donquijote

    15. März 2018 um 14:08 Uhr

1646899449 430 Wann verwende ich die PHP Konstante „PHP EOL
Adam Bellaire

Jawohl, PHP_EOL wird angeblich verwendet, um das Zeilenumbruchzeichen plattformübergreifend zu finden, und behandelt daher DOS/Unix-Probleme.

Beachten Sie, dass PHP_EOL stellt das Endzeilenzeichen für die dar Strom System. Beispielsweise findet es keine Windows-Endzeile, wenn es auf einem Unix-ähnlichen System ausgeführt wird.

  • Sollte es beim Schreiben eines Befehlszeilenskripts als Endzeilenzeichen verwendet werden?

    – Thomas Owens

    24. September 2008 um 17:37 Uhr

  • @Andre: Wie wäre es mit jemandem, der Apps schreibt, die von anderen installiert, verwendet und bereitgestellt werden sollen? Schlagen Sie vor, dass alle ihre “unterstützten Plattformen” auf * nix beschränken sollten?

    – Zylindrisch

    4. März 2011 um 10:52 Uhr

  • @Stann – Was die “großen Projekte”, die Sie kennen, tun, ist kaum der entscheidende Faktor für Best Practice, geschweige denn, was nützlich oder nicht nützlich ist. Ich betreue ein “großes Projekt”, das teilweise auf mehreren Hosts bereitgestellt wird, einschließlich einiger Windows-Server. Gehen Sie nicht davon aus – die Konstanten schaden nichts und sind eine absolut gültige Möglichkeit, plattformneutralen Code zu schreiben. Ihre gegenteiligen Kommentare sind etwas absurd.

    – Chris Baker

    13. September 2012 um 19:12 Uhr


  • Nein, ich glaube nicht, dass deine Antwort richtig ist. Sie generieren Code auf einem System, senden die Ausgabe jedoch an ein anderes System. PHP_EOL teilt Ihnen jedoch das Zeilenende-Trennzeichen NUR für das System mit, in dem es verwendet wird. Es garantiert Ihnen nicht, dass das andere System dasselbe Trennzeichen verwendet. Siehe meine Antwort unten.

    – StanE

    23. August 2015 um 11:43 Uhr

  • aber nicht verwenden PHP_EOL für Daten, die aus dem Formular gepostet wurden.

    – Nabi KAZ

    10. November 2016 um 10:13 Uhr

Wann verwende ich die PHP Konstante „PHP EOL
AlexV

Von main/php.h von PHP Version 7.1.1 und Version 5.6.30:

#ifdef PHP_WIN32
#   include "tsrm_win32.h"
#   include "win95nt.h"
#   ifdef PHP_EXPORTS
#       define PHPAPI __declspec(dllexport)
#   else
#       define PHPAPI __declspec(dllimport)
#   endif
#   define PHP_DIR_SEPARATOR '\\'
#   define PHP_EOL "\r\n"
#else
#   if defined(__GNUC__) && __GNUC__ >= 4
#       define PHPAPI __attribute__ ((visibility("default")))
#   else
#       define PHPAPI
#   endif
#   define THREAD_LS
#   define PHP_DIR_SEPARATOR "https://stackoverflow.com/"
#   define PHP_EOL "\n"
#endif

Wie du siehst PHP_EOL kann sein "\r\n" (auf Windows-Servern) oder "\n" (auf irgendetwas anderes). Auf PHP-Versionen frühere 5.4.0RC8 war ein dritter Wert möglich PHP_EOL: "\r" (auf MacOSX-Servern). Es war falsch und wurde am 01.03.2012 mit behoben Fehler 61193.

Wie andere Ihnen bereits gesagt haben, können Sie verwenden PHP_EOL in jeder Art von Ausgabe (wobei irgendein dieser Werte gültig sind – wie: HTML, XML, Protokolle …), wo Sie eine Vereinheitlichung wünschen Zeilenumbrüche. Denken Sie daran, dass es der Server ist, der den Wert bestimmt, nicht der Client. Ihre Windows-Besucher erhalten den Wert von Ihrem Unix-Server, was für sie manchmal unbequem ist.

Ich wollte nur die möglichen Werte von zeigen PHP_EOL unterstützt von den PHP-Quellen, da es hier noch nicht gezeigt wurde …

  • Beeindruckend. Die PHP-Entwickler liegen da einfach falsch. Als Wikipedia-Link erwähnen Sie, dass Mac OS 9 und früher “\r” verwendet, aber nicht OS X, das “\n” verwendet. Jemand sollte einen Fehlerbericht schreiben …

    – imgx64

    28. Januar 2012 um 7:32 Uhr

  • @ imgx64 Ja vielleicht, aber ehrlich gesagt hast du jemals einen Produktions-MAC-Server gesehen?

    – AlexV

    30. Januar 2012 um 13:53 Uhr

  • @ imgx64 Es wurde 33 Tage nach Ihrem Beitrag behoben 🙂 Ich habe meine Antwort aktualisiert, um die aktuellen Quellen widerzuspiegeln.

    – AlexV

    25. Januar 2013 um 16:33 Uhr

  • Ich glaube nicht, dass das Argument, PHP_EOL für die Ausgabe (!) Zu verwenden, gültig ist. PHP_EOL ist serverseitig, während die Ausgabe normalerweise für den Client ist (der andere Zeilenende-Trennzeichen verwendet). Beispiel: Wenn Sie eine mehrzeilige Klartextausgabe auf einem Linux-System mit PHP_EOL erstellen und an ein Windows-System senden, ist dies kein gültiges Zeilenende-Trennzeichen – es hängt davon ab, welche Client-Software die Ausgabe anzeigt. Browser und einige Texteditoren können damit umgehen, aber wenn Sie den Text beispielsweise in Notepad anzeigen, befindet sich alles in einer Zeile.

    – StanE

    23. August 2015 um 10:47 Uhr

  • php -r "echo addcslashes(PHP_EOL, PHP_EOL), PHP_EOL;" herausfinden.

    – Bob Stein

    9. November 2017 um 16:04 Uhr

1646899450 862 Wann verwende ich die PHP Konstante „PHP EOL
Zoredache

Sie verwenden PHP_EOL wenn Sie eine neue Linie wollen und plattformübergreifend sein möchten.

Dies kann der Fall sein, wenn Sie Dateien in das Dateisystem schreiben (Protokolle, Exporte usw.).

Sie können es verwenden, wenn Sie möchten, dass Ihr generiertes HTML lesbar ist. Sie könnten also Ihrer folgen <br /> mit einer PHP_EOL.

Sie würden es verwenden, wenn Sie PHP als Skript von Cron ausführen und etwas ausgeben und für einen Bildschirm formatieren müssten.

Sie können es verwenden, wenn Sie eine zu sendende E-Mail erstellen, die formatiert werden muss.

  • Sie müssen beim Generieren von HTML keine plattformunabhängigen Zeilenumbrüche verwenden.

    – Rauben

    21. April 2009 um 22:00 Uhr

  • @Rob, wenn ältere Versionen von IE mir einen besseren Seitenquelltext-Viewer als Windows Notepad gegeben hätten, hätte ich Ihnen vielleicht zugestimmt.

    – Zoredache

    23. Januar 2010 um 1:18 Uhr

  • @Zoredache – Der HTML-Code wird mit Zeilenumbrüchen generiert, die für die Plattform geeignet sind, auf der PHP ausgeführt wird, nicht unbedingt für die Plattform, von der aus Sie auf Seiten zugreifen.

    – Dominic Rodger

    2. Februar 2010 um 8:43 Uhr

  • +1 für die Erwähnung des E-Mail-Aufbaus $header = "From: $from" . PHP_EOL; $header .= "Reply-To: $from" . PHP_EOL; $header .= "Return-Path: $from" . PHP_EOL;

    – Jakob Cosoroaba

    17. Mai 2010 um 12:13 Uhr


  • PHP_EOL sollte nicht zum Trennen von E-Mail-Headern verwendet werden. Entsprechend PHP-Mail manuell, sollten mehrere zusätzliche Header mit einem CRLF (\r\n) getrennt werden.

    – Halil Özgür

    27. November 2010 um 13:55 Uhr


1646899451 56 Wann verwende ich die PHP Konstante „PHP EOL
Salmann A

PHP_EOL (String) Das korrekte ‘End Of Line’-Symbol für diese Plattform. Verfügbar seit PHP 4.3.10 und PHP 5.0.2

Sie können diese Konstante verwenden, wenn Sie Textdateien im Dateisystem des Servers lesen oder schreiben.

Zeilenenden spielen in den meisten Fällen keine Rolle, da die meisten Programme Textdateien unabhängig von ihrer Herkunft verarbeiten können. Sie sollten mit Ihrem Code konsistent sein.

Wenn Zeilenenden wichtig sind, geben Sie die Zeilenenden explizit an, anstatt die Konstante zu verwenden. Zum Beispiel:

  • HTTP-Header Muss getrennt werden durch \r\n
  • CSV-Dateien sollte verwenden \r\n als Zeilentrenner

Wann verwende ich die PHP Konstante „PHP EOL
Iain Collins

Ich möchte eine Antwort einwerfen, die sich mit “Wann nicht um es zu verwenden”, da es noch nicht behandelt wurde und sich vorstellen kann, dass es blind verwendet wird und niemand bemerkt, dass es später ein Problem gibt. Einiges davon widerspricht einigen der vorhandenen Antworten etwas.

Bei der Ausgabe an eine Webseite in HTML, insbesondere Text in <textarea>, <pre> oder <code> Sie wahrscheinlich immer verwenden möchten \n und nicht PHP_EOL.

Der Grund dafür ist, dass Code zwar auf einem Server – der zufällig eine Unix-ähnliche Plattform ist – gut funktioniert, aber auf einem Windows-Host (z. B. der Windows Azure-Plattform) die Anzeige von Seiten in einigen Browsern ändern kann (insbesondere Internet Explorer – einige Versionen sehen sowohl \n als auch \r).

Ich bin mir nicht sicher, ob dies seit IE6 immer noch ein Problem ist oder nicht, also könnte es ziemlich strittig sein, scheint aber erwähnenswert zu sein, wenn es den Leuten hilft, über den Kontext nachzudenken. Es kann andere Fälle geben (z. B. striktes XHTML), in denen plötzlich ausgegeben wird \r‘s auf einigen Plattformen könnte Probleme mit der Ausgabe verursachen, und ich bin sicher, dass es andere Grenzfälle wie diese gibt.

Wie bereits von jemandem angemerkt, möchten Sie es nicht verwenden, wenn Sie HTTP-Header zurückgeben – da sie auf jeder Plattform immer dem RFC folgen sollten.

Ich würde es nicht für so etwas wie Trennzeichen in CSV-Dateien verwenden (wie jemand vorgeschlagen hat). Die Plattform, auf der der Server ausgeführt wird, sollte die Zeilenenden in generierten oder konsumierten Dateien nicht bestimmen.

1646899451 571 Wann verwende ich die PHP Konstante „PHP EOL
StanE

Nein, PHP_EOL behandelt keine Endline-Probleme, da das System, auf dem Sie diese Konstante verwenden, nicht dasselbe System ist, an das Sie die Ausgabe senden.

Ich würde die Verwendung von PHP_EOL überhaupt nicht empfehlen. Unix/Linux verwenden \n, MacOS / OS X wechselte ebenfalls von \r zu \n und unter Windows können viele Anwendungen (insbesondere Browser) es auch korrekt anzeigen. Unter Windows ist es auch einfach, vorhandenen clientseitigen Code so zu ändern, dass nur \n verwendet wird, und dennoch die Abwärtskompatibilität aufrechtzuerhalten: Ändern Sie einfach das Trennzeichen für das Zeilenkürzen von \r\n in \n und packen Sie es in eine trim()-ähnliche Funktion .

1646899452 372 Wann verwende ich die PHP Konstante „PHP EOL
Tyzoid

Ich fand PHP_EOL sehr nützlich für die Dateiverwaltung, insbesondere wenn Sie mehrere Inhaltszeilen in eine Datei schreiben.

Sie haben beispielsweise eine lange Zeichenfolge, die Sie beim Schreiben in eine einfache Datei in mehrere Zeilen aufteilen möchten. Die Verwendung von \r\n funktioniert möglicherweise nicht, also fügen Sie einfach PHP_EOL in Ihr Skript ein und das Ergebnis ist fantastisch.

Schauen Sie sich dieses einfache Beispiel unten an:

<?php

$output="This is line 1" . PHP_EOL .
          'This is line 2' . PHP_EOL .
          'This is line 3';

$file = "filename.txt";

if (is_writable($file)) {
    // In our example we're opening $file in append mode.
    // The file pointer is at the bottom of the file hence
    // that's where $output will go when we fwrite() it.
    if (!$handle = fopen($file, 'a')) {
         echo "Cannot open file ($file)";
         exit;
    }
    // Write $output to our opened file.
    if (fwrite($handle, $output) === FALSE) {
        echo "Cannot write to file ($file)";
        exit;
    }
    echo "Success, content ($output) wrote to file ($file)";
    fclose($handle);
} else {
    echo "The file $file is not writable";
}
?>

  • \n\r wird niemals funktionieren, da die Sequenz \r\n sein soll

    – Frak

    26. November 2010 um 12:04 Uhr

987000cookie-checkWann verwende ich die PHP-Konstante „PHP_EOL“?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy