Aus txt-Datei die letzten 5 Zeilen auslesen.
Florian Zeiss
- php
Mahlzeit,
ich möchte aus einer bestehenden TXT Datei die letzten 5 Zeilen auslesen.
Wie kann ich dies elegant lösen?
Folgendes habe ich auf die Beine gestellt: (ist nicht elegant)
<?
$zeilen = file ('test.txt');
$anzahl = count($zeilen);
foreach ($zeilen as $line_num => $line) {
if ($line_num == $anzahl -1) {
echo "Zeile $line_num: $line <br>";
}
if ($line_num == $anzahl -2) {
echo "Zeile $line_num: $line <br>";
}
}
?>
Man könnte jetzt weitere if Abfragen einfügen bis die fünfte Zeile erreicht ist.
Dies ist eindeutig nicht die obtimale Lösung.
Bitte um Eure Hilfe, steh im Moment auf dem Schlauch.
Danke schon einmal im Voraus.
Florian
hi,
ich möchte aus einer bestehenden TXT Datei die letzten 5 Zeilen auslesen.
Wie kann ich dies elegant lösen?
Folgendes habe ich auf die Beine gestellt: (ist nicht elegant)
[...]
nein, hier foreach zu verwenden ist wirklich nicht elegant.
du hast in $zeilen ein array vorliegen, und kannst mit count() die anzahl der elemente in diesem array ermitteln.
also wäre jetzt wohl eine for-schleife von element-anzahl minus 5 bis element-anzahl minus 1 angebracht, in der du dann mit $zeile[index-nummer] direkt auf das jeweilige element zugreifst. oder...?
gruss, wahsaga
Moin!
ich möchte aus einer bestehenden TXT Datei die letzten 5 Zeilen auslesen.
Wie kann ich dies elegant lösen?
Es gibt, wie immer, mehrere Möglichkeiten.
Wenn du wirklich nur die letzten 5 Zeilen brauchst: Unter Linux und praktisch jedem anderen Unix gibt es den Befehl "tail", welcher die letzten Zeilen einer Textdatei ausgibt.
Mit "tail -n 5 dateiname" kriegst du die letzten 5 Zeilen auf der Kommandozeilenebene ausgegeben. Wenn du diese Ausgabe mittels exec()-Funktion in PHP einfängst, hast du eine sehr elegante Lösung:
exec("tail -n 5 dateiname",$fuenfzeilen);
gibt dir ein Array zurück, welches die letzten 5 Zeilen enthält.
Wenn du lieber systemunabhängig bleiben willst, dann setze deinen eigenen Ansatz einfach konsequenter um:
<?
$zeilen = file ('test.txt');
Das liest die gesamte Datei in ein Array ein, jede Zeile ist ein Element von 0 bis X.
$anzahl = count($zeilen);
Das guckt nach, wieviele Zeilen enthalten sind.
und mit:
for ($i=$anzahl-5; $i<$anzahl; $i++)
{
echo "Zeile $i: {$zeilen[$i]}";
}
gibst du einfach die letzten 5 Zeilen aus.
- Sven Rautenberg