Michael: Unnötige Leerzeilen aus Textdatei löschen

Beitrag lesen

Guten Morgen,

Ich speichere meine Gästebuch-Einträge in einer Textdatei ab.

Nun ergibt sich die unangenehme Nebenerscheinung, aus welchen Gründen auch immer, dass immer wieder Leerzeilen zwischen den Einträgen gespeichert werden.

Ausgangspunkt war folgender Code:

$Neuer_Eintrag = "$Name|$Kommentar|$Erstellt_am|$Erstellt_um\n";

$Zeilen_in_Datei = file ($Gaestebuch_Eintraege);
   $Anzahl_Eintraege = count ($Zeilen_in_Datei);

$Datei_Zeiger = fopen ($Gaestebuch_Eintraege, 'w+');
   flock ($Datei_Zeiger, 2);
   fwrite ($Datei_Zeiger, $Neuer_Eintrag);

for ($i = 0; $i < $Anzahl_Eintraege; $i++)
     fwrite ($Datei_Zeiger, $Zeilen_in_Datei [$i]);

flock ($Datei_Zeiger, 3);
   fclose ($Datei_Zeiger);

Bei 2 Einträgen sieht die Datei nun so aus:

b|b|30.10.2004|06:15.51|b|b|xxx|xxx|xxx
   a|a|30.10.2004|06:15.43|a|a|xxx|xxx|xxx
   Leerzeile
   Leerzeile
   Leerzeile

Ich habe die Datei nun in einem Texteditor komplett gelerrt und die for-Schleife um folgende Anweisung ergänzt:

if (! preg_match ("/^([:space:]*)\n$/", $Zeilen_in_Datei [$i]))

Damit sieht der neue for-Block so aus:

for ($i = 0; $i < $Anzahl_Eintraege; $i++)
   {
     if (! preg_match ("/^([:space:]*)\n$/", $Zeilen_in_Datei [$i]))
       fwrite ($Datei_Zeiger, $Zeilen_in_Datei [$i]);
   }

Bei Erstellung des 1. Eintrages wird auch nur der eine Eintrag ohne Leerzeile geschrieben.
Bei Erstellung des 2. Eintrages habe ich nach den Einträgen aber wieder eine Leerzeile:

b|b|30.10.2004|06:28.15|b|b|xxx|xxx|xxx
   a|a|30.10.2004|06:27.28|a|a|xxx|xxx|xxx
   Leerzeile

Bei Erstellung des 3. Eintrages sieht die Datei aber wieder so aus:

c|c|30.10.2004|06:29.41|c|c|xxx|xxx|xxx
   b|b|30.10.2004|06:28.15|b|b|xxx|xxx|xxx
   Leerzeile
   a|a|30.10.2004|06:27.28|a|a|xxx|xxx|xxx
   Leerzeile
   Leerzeile

Wie kann ich verhindern, dass diese unnötigen Leerzeilen nicht in die Textdatei geschrieben bzw. gelöscht werden ?

Vielen Dank.

Gruss, Michael