Sven Rautenberg: Zeilenendezeichen feststellen

Beitrag lesen

Moin!

Besonders schwierig wird es wohl, wenn innerhalb einer Datei blöderweise auch noch unterschiedliche EOL verwendet werden.

PHPStorm (empfehlenswerte IDE für PHP) macht es so: Das erste Zeilenendezeichen der Datei bestimmt, welche Endezeichen die Datei beim Speichern bekommt. Alle Zeilenendezeichen der Datei werden normalisiert und intern gar nicht erst unterschiedlich behandelt.

Wird mir dann vermutlich auch nix anderes übrig bleiben. Sonst steigt da ja später keiner mehr durch. Sollte man dann für HTML-Dateien grundsätzlich "\r\n", also CRLF benutzen und für Progammdateien PHP_EOL?

PHP_EOL ist eine systemabhängige Konstante, die unter Windows CRLF enthält, und unter Linux/MacOSX nur LF. (PHP-Versionen für klassisches MacOS kenne ich nicht, vermutlich stünde dann CR drin).

Damit hast du dein Problem nicht gelöst.

CRLF für Windows ist nur relevant, wenn die Bearbeiter dieser Dateien Editoren benutzen, die damit nicht klar kommen. Also im Prinzip nur der originale Windows Notepad. Alle Alternativen dazu sind in der Lage, auch LF korrekt als Zeilenende zu erkennen und umzusetzen. Auf Linux-Ebene hingegen ist das Problem mit CRLF nicht ganz so schlimm, man stört sich gelegentlich nur am angezeigten CR-Zeichen.

Es bleibt also eine Frage der Arbeitsweise. Ich persönlich bin für überall LF benutzen. Spart immerhin ein Byte pro Zeile.

Und innerhalb von enthaltenen Texten können dann auch noch welche vorkommen, die aber ggf. nicht mit ausgewertet und dann auch nicht ersetzt werden sollen.

Hä?

Die Programmdatei kann "Texte enthalten", die eigene Zeilenendezeichen enthalten. Die sollen aber ggf. (Schalter) nicht angetastet werden.

Den Zahn werde ich aber vermutlich ziehen müssen. :-|

Nicht umsetzbar, wenn du nicht beigehen und den Text parsen willst.

Außerdem irrelevant. Mir ist noch kein Szenario untergekommen, in dem man den PHP-Code mit LF-Zeilenenden versieht, und darin enthaltenes HTML mit CRLF. Wenn CRLF wichtig ist, dann stehen entsprechende Zeilenenden im Code, also z.B. echo "<body>\r\n"; - Und die wirst du nicht anfassen mit der Konvertierung.

- Sven Rautenberg