kostenloser Webspace werbefrei: lima-city


Datei Zeile für Zeile auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.

    Hallo,
    aufgrund diesen Threads (http://www.lima-city.de/boards/thread/68489) mach hab ich mal eine neue Frage:
    Wie kann ich eine Datei Zeile für Zeile durchgehen, ohne die ganze Datei immer einlesen zu müssen, sonder nur immer die eine Zeile??
    file() liest ja zB die ganze ein, und so kann ich die Datei mit einer foreach-Schleife durchgehen.

    Doch kann man das Speicherschonender machen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Du hast doch eigentlich schon dort die Antwort von Bladehunter bekommen...
    http://de2.php.net/manual/de/function.fopen.php
    fopen() liefert dir nur den File Pointer also Verweis auf eine Datei und somit sollte dein Problem geklärt sein...
  4. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.

    Kann das dann so gehen:

    <?php
    $datei = fopen(\"memberfile_tribe.txt\\\",\"w\\\")
        or die(\'Datei konnte nicht erstellt werden!\');
    
    // hier der ungeteste Code
    $lines = fopen(\"tribe.txt\\\",\"w\\\")
        or die(\'Datei konnte nicht geoeffnet werden!\');
    foreach ($lines as $line)
    {
        list($id, $name, $ally, $villages, $points, $rank) = explode(\',\', $line);
    
        if($ally==1842)                //1842 ist die ID von ~K34~
        {
            fwrite($datei, trim($id));
            fwrite($datei, \"rn\\\");
        }
    }
      rewind($datei);
      fclose($datei);
     echo \"<b>Datei erfolgreich erstellt/aktualisiert!</b>\\\";
    ?>
  5. Nein, da fopen() dir nur den Pointer, der auf eine Datei verweist zurückgibt. Du musst das doch mit fgets() machen, so wie bladehunter es schon gesagt hatte.
    Schau dir einfach mal das Beispiel in der PHP-Dokumentation und die Beispiele bei den Kommentaren da an. ;)
    http://de2.php.net/manual/de/function.fgets.php
  6. Autor dieses Themas

    philippkern

    Kostenloser Webspace von philippkern

    philippkern hat kostenlosen Webspace.


    Nein, da fopen() dir nur den Pointer, der auf eine Datei verweist zurückgibt. Du musst das doch mit fgets() machen, so wie bladehunter es schon gesagt hatte.
    Schau dir einfach mal das Beispiel in der PHP-Dokumentation und die Beispiele bei den Kommentaren da an. ;)
    http://de2.php.net/manual/de/function.fgets.php



    Dann müsste es so gehen, ansonsten gib ichs auf. :slant:

    <?php
    $datei = fopen(\"memberfile_tribe.txt\\\",\"w\\\")
        or die(\'Datei konnte nicht erstellt werden!\');
    
    // hier der ungeteste Code
    $handle = fopen(\"tribe.txt\\\",\"w\\\")
        or die(\'Datei konnte nicht geoeffnet werden!\');
    
    while (!feof($handle)) {
        $line = fgets($handle);   // Was soll ich da als lengh angeben??
    
        list($id, $name, $ally, $villages, $points, $rank) = explode(\',\', $line);
    
        if($ally==1842)                //1842 ist die ID von ~K34~
        {
            fwrite($datei, trim($id));
            fwrite($datei, \"rn\\\");
        }
        
    }
    
      rewind($datei);
      fclose($datei);
     fclose ($handle); 
    
     echo \"<b>Datei erfolgreich erstellt/aktualisiert!</b>\\\";
    ?>

    PS.: Es sind einige \\ zu viel drin
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!