Auf unterschiedlichen Systemen werden unterschiedliche Zeilenschaltungen eingesetzt.
Betriebssystem | Abkürzung | Code Hex | Code Dezimal | Escape-Sequenz |
Unix, Linux, Mac OS X, AmigaOS, BSD, weitere | LF | 0A | 10 | \n |
Windows, DOS, OS/2, CP/M, TOS (Atari) | CR LF | 0D 0A | 13 10 | \r\n |
In den Text-Dateien der Statistik wird generell
LF verwendet.
Das macht es manchmal schwierig mit einem Editor die Daten zu kontrollieren bzw. bei repair-Problemen den entsprechenden Satz zu finden und zu korrigieren.
Das folgende Programm kopiert eine Datei und konvertiert dabei die Zeilenschaltungen.
Code:<?php
echo 'aufrufen mit URL-Parameter:'.'<br>';
echo ' file = zu kopieren Pfad/Datei'.'<br>';
echo ' eol = n oder rn, n=("\n"), rN=("\r\n")'.'<hr>';
if ((!isset($_GET['file']))||(!is_file($_GET['file']))) {echo 'file ungültig'; exit();}
if ((!isset($_GET['eol']))||(($_GET['eol']!='n')&&($_GET['eol']!='rn'))) {echo 'eol ungültig'; exit();}
if ($_GET['eol']=='n') {$eol="\n";} else {$eol="\r\n";}
$o=$_GET['file'].'.'.$_GET['eol'].'.tmp';
file_put_contents($o,str_replace(array("\r\n","\n"),array("\n",$eol),file_get_contents($_GET['file'])));
echo $o.' erstellt';
?>
Z.B. als
copy_file_change-eol.php im Verzeichnis
stat/ angelegt und mit
http://.../stat/copy_file_change-eol.php?file=log/logdb.dta&eol=rn aufgerufen, wird die
log/logdb.dta in
log/logdb.dta.rn.tmp kopiert und
"\r\n" als Zeilenschaltung verwendet. Jetzt kann diese z.B. auch auf einem Windows-Rechner mit einem Editor einfach durchsucht und bearbeitet werden. Beim Speichern darauf achten, das
ANSI als Codierung verwendet wird. Ggf. anschließend durch
...?file=log/logdb.dta.rn.tmp&eol=r zurück konvertieren und gegen die Originaldatei austauschen.
Achtung: Vor solchen Aktionen immer für eine ausreichende Sicherung sorgen!