Unnötige Leerzeilen in dat-datei entfernen
Michael Clos
- php
Hallo,
ich habe Probleme mit der Speicherung neuer Gästebuch-Einträge in einer dat-Datei, da immer wieder Leerzeilen eingefügt werden, was nicht sein soll.
Hier der relevante Code zur Speicherung eines neuen Eintrages:
$Eintraege_in_Datei = file ($Datei_Name);
$Anzahl_Eintraege = count ($Eintraege_in_Datei);
$Datei_Zeiger = fopen ($Datei_Name, "w");
if (strtoupper ($Betriebssystem) == "UNIX")
{
if (flock ($Datei_Zeiger, LOCK_EX))
{
fwrite ($Datei_Zeiger, $Neuer_Eintrag);
if ($Anzahl_Eintraege > 0)
{
fwrite ($Datei_Zeiger, "\n");
for ($i = 0; $i < $Anzahl_Eintraege; $i++)
{
if (empty ($Eintraege_in_Datei [$i]))
continue;
else
fwrite ($Datei_Zeiger, $Eintraege_in_Datei [$i] . "\n");
}
}
flock ($Datei_Zeiger, LOCK_UN);
}
}
else
{
fwrite ($Datei_Zeiger, $Neuer_Eintrag);
if ($Anzahl_Eintraege > 0)
{
fwrite ($Datei_Zeiger, "\n");
for ($i = 0; $i < $Anzahl_Eintraege; $i++)
{
if (empty ($Eintraege_in_Datei [$i]))
continue;
else
fwrite ($Datei_Zeiger, $Eintraege_in_Datei [$i] . "\n");
}
}
}
Die dat-Datei sieht hierbei wie folgt aus:
Ein Eintrag erstellt:
[1] XXXXXXXXXX
Zwei Einträge erstellt:
[1] xxxxxxxxxx
[2] xxxxxxxxxx
[3] Leerzeile
Drei Einträge erstellt:
[1] xxxxxxxxxx
[2] xxxxxxxxxx
[3] Leerzeile
[4] Leerzeile
[5] xxxxxxxxxx
[6] Leerzeile
[7] Leerzeile
Vier Einträge erstellt:
[1] xxxxxxxxxx
[2] xxxxxxxxxx
[3] Leerzeile
[4] Leerzeile
[5] xxxxxxxxxx
[6] Leerzeile
[7] Leerzeile
[8] Leerzeile
[9] Leerzeile
[10] Leerzeile
[11] Leerzeile
[12] xxxxxxxxxx
[13] Leerzeile
[14] Leerzeile
[15] Leerzeile
[16] Leerzeile
[17] Leerzeile
[18] Leerzeile
[19] Leerzeile
Wie kann ich Leerzeilen 100% verhindern ?
Vielen Dank im voraus.
Gruss, Michael Clos
Hallo,
if (empty ($Eintraege_in_Datei [$i]))
Probier hier mal empty(trim($Eintraege_in_Datei [$i])), trim filtert dann vorher nicht sichtbare Zeichen (Leerzeichen, Zeilenumbrüche etc.) raus.
Schöne Grüße
Julian
Hallo Julian,
Danke für Deinen Tip. Jetzt habe ich zwischendrin keine Leerzeilen mehr, aber immer noch ab dem zweiten Eintrag eine Leerzeile am Ende der Datei.
Soll ich die Schleife dann noch einmal durchlaufen lassen, um auch diese Zeile herauszufiltern ?
Sicherlich nicht sonderlich elegant... :o)
Was stimmt noch nicht ganz ?
Gruss, Michael Close
Hi Michael!
Soll ich die Schleife dann noch einmal durchlaufen lassen, um auch diese Zeile herauszufiltern ?
Das liegt daran, dass du bei deinem fwrite immer ein ."\n" am Ende hast. Wenn du überprüfst, ob du im letzten Durchgang der Schleife bist, und in diesem Fall KEIN "\n" mit rein schreibst, ist vermutlich auch die letzte Leerzeile weg.
Schöne Grüße
Julian
Guten Morgen, Julian,
Bingo !!! :-))
Jetzt funktioniert's...
Vielen Dank:-))
Gruss, Michael