Frank: Datei auslesne und filtern

Seid gegrüßt!

Ich habe ein PHP-Skrip verfasst, das eine text-Datei ausliest. So weit so gut.
Jetzt möchte ich aber die ersten und letzten beiden Zeilen nicht ausgeben.
Mit den ersten beiden war das kein Problem. Habe eine variable hochzählen lassen, und die ausgabe erst gestartet, sobald die variable=2 war.

Doch die letzten beiden ???

Danke für Eure Hilfe

Frank

  1. Huhu Frank

    Mit den ersten beiden war das kein Problem. Habe eine variable hochzählen lassen, und die ausgabe erst gestartet, sobald die variable=2 war.

    Doch die letzten beiden ???

    ich nehme mal an, dass Du die Datei per file einliest.
    Dann erhältst Du ein Array mit allen Zeilen Deiner txt-Datei.

    Dann benutz doch array-Funktionen um einzelne Elemente zu entfernen.

    (z.B. array_pop,array_shift)

    Viele Grüße

    lulu

    1. Mensch lulu, Danke...! Ich habe gar nicht an die file-Funktion gedacht...na klar!!

      Aber wo ich schon eine PHP-xpertin vor mir hab: Wie löse ich folgendes Problem:

      Ich habe eine Textarea, in die der user html-code eingeben soll.
      Wenn allerdings Anführungszeichen ("""") eingegeben werden, so wird in die Datei ("""") geschrieben! Das is allerdings a bissl blöd.

      What to do ??

      Thanx

      1. Wenn allerdings Anführungszeichen ("""") eingegeben werden, so wird in die Datei ("""") geschrieben! Das is allerdings a bissl blöd.

        wenn du es wieder ausgiebst einfach ein stripslashes() auf die Variable.

        lg
        Ludwig

  2. Hi!

    Jetzt möchte ich aber die ersten und letzten beiden Zeilen nicht ausgeben.

    Dafür behälst Du am besten 2 Zeilen im Puffer (sprich in Variablen) und gibst erst die erste der beiden aus, wenn im nächsten Schleifendurchlauf nicht EOF ist.
    Also ungefähr so:

    $line1=$line2="";
    $nr=1;
    while(nicht eof)
    {
      if($nr>2)
      {
        echo $line1;
        $line1 = $line2;
        $line2 = zeile lesen;
      }
      $nr++;
    }

    Damit müsste eine Zeile erst ausgegeben werden, wenn der Lesevorgang schon zwei Zeilen weiter ist (wenn nicht noch irgendwo ein Fehler steckt ;-).

    VG->Cologne
    Simon

    1. Hi!

      Jetzt möchte ich aber die ersten und letzten beiden Zeilen nicht ausgeben.

      [.....]

      warum net gleich innerhalb der for() schleife ein:

      if(($i>=2) || ($i<count($array)-1){
       echo "";
      }

      lg
      Ludwig

      1. statt oder natürlich und.. sorry

        if(($i>=2) && ($i<count($array)-1){
        echo "";
        }

        lg
        Ludwig

      2. Hi!

        warum net gleich innerhalb der for() schleife ein:

        Weil ich nach seinem Posting nicht davon ausgegangen bin, dass er die file-Funktion benutzt und somit ein Array vorliegen hat (wofür bei großen Dateien ja immer noch viel für spricht).

        VG->Cologne
        Simon

        1. Hi!

          warum net gleich innerhalb der for() schleife ein:

          Weil ich nach seinem Posting nicht davon ausgegangen bin, dass er die file-Funktion benutzt und somit ein Array vorliegen hat (wofür bei großen Dateien ja immer noch viel für spricht).

          Definiere "großen dateien"

          ne CVS datei bis 10MB klopf ich relativ schnell mit file rein. (und 10MB text ist viel :)

          hab mal vor nem jahr das Forumsarchiv in ne datenbank geschaufelt. auch mittels file(), daß waren glaub ich um die 160MB. die max_execution_time auf 10minuten hoch und schon gings durch :)

          Ludwig