datei vom ende zum anfang lesen

soox

New member
suche eine moeglichkeit in php von einer datei zuerst die letzte dann die zweitletzte, drittletzte....erste zeile zu lesen....

weiss da jemand wie ich bei
string fgets ( resource handle [, int length])
den "handle" verarbeiten muss/kann?
 

ivegotmail

Member of Honour
nimm die funktion file, die liefert dir gleich ein array mit den zeilen
Code:
$zeilen = file($dateiname); 
for ($i=count($zeilen)-1; $i>=0; $i--)
{
  $zeile = $zeilen[$i];
  ...
}
 

soox

New member
thx fuer deine idee...aber..

wenn das file 100MB gross ist, was dann????

brauche nicht das ganze file sondern nur bis zu einem letzten bestimmten ereignis
 

Anonym001

Member
PHP:
$handle = fopen ("/tmp/inputfile.txt", "r");  // Datei öffnen
while (!feof($handle))   // So lange EOF (End of File) nicht erreicht ist
{
    $buffer = fgets($handle, 4096);   // schreib aktuelle Zeile in $buffer (max. 4096 
                                                           // Zeichen pro Zeile )
    echo $buffer;  // Zeile Ausgeben
}
fclose ($handle);   // Datei schliessen

Quelle:

http://www.php-center.de/de-html-manual/function.fgets.html

Ich würde den Link auch noch anschauen da dort die Funktion auch beschrieben ist.
Das Beispiel ist auch von da... ich habs bloss Kommentiert...

--Ano
 

soox

New member
@Anonym001: denke du hast mich bei meinem ersten posting nicht ganz verstanden....


mit
Original von soox
suche eine moeglichkeit in php von einer datei zuerst die letzte dann die zweitletzte, drittletzte....erste zeile zu lesen....
meinte ich, dass ich eine moeglichkeit suche den dateizeiger (bei deinem bsp "$handle) zu bearbeiten..somit haette ich dann die moeglichkeit das file von "eof" zum anfang zu lesen (also rueckwaerts)

dein bsp macht genau das gegenteil von dem was ich will.....
 

Anonym001

Member
Oh sorry hatte ich übersehen...

PHP:
$handle = fopen ("/tmp/inputfile.txt", "r");  // Datei öffnen

fseek ($handle ,0,SEEK_END); // Ans Ende der Datei Springen...

while (fgetc($handle)!='\n')   // Bis zum nächsten Zeilenumbruch gehen...
{
fseek($handle,-1,SEEK_CUR); // Ein zeichen zurück...
}

//Jetzt steht der Zeiger auf dem Ende der 2.letzten Zeile... also ein Zeichen vor
// Dann sind wir am Anfang der Nächsten Zeile....

fseek($handle,1,SEEK_CUR); // Ein zeichen vor...

// und jetzt die Zeile einlesen


    $data= fgets($handle, 4096);   

fclose ($handle);   // Datei schliessen

Uff...
 
Oben