Klassmann: Dateisystem, Textdatei: Ab bestimmter Position LÖSCHEN

Hallo zusammen,

folgende Frage. Ich habe eine Textdatei mit Datensätzen fester Länge. Jetzt möchte ich mit fseek den Dateizeiger positionieren, und aber eben dieser Position LÖSCHEN! Das Problem ist: ich weiss nicht wie. Mit Lerrzeichen auffüllen ist kein Problem. Allerdings wird das dann ja nicht gelöscht.
Kann mir einer auf die Sprünge helfen? Ich durchforste jetzt schon seit 2 Stunden meine PHP-Referenz :-(

Danke vielmals ;-)

Peter

  1. hi,

    Kann mir einer auf die Sprünge helfen? Ich durchforste jetzt schon seit 2 Stunden meine PHP-Referenz :-(

    "rausnehmen" ist afaik nicht. Ich schaetze, Du musst das file in ein Array einlesen, damit das Ganze neuschreiben, und dabei die zu loeschenden Zeilen blocken.

    hth + Gruss  Joachim

    1. Hi!

      Ich bin zwar neu in PHP (aber nicht in anderen Programmiersprachen), aber ich habe in der Dokumentation folgendes gefunden:

      int ftruncate ( int fp, int size)

      Nimmt den Dateizeiger fp, und verkürzt die Datei auf die Länge size. Diese Funktion gibt bei Erfolg TRUE, ansonsten FALSE zurück.

      Vielleicht hilfts.

      Ciao

      Stephan

      1. Hallo Stephan,

        int ftruncate ( int fp, int size)

        Nimmt den Dateizeiger fp, und verkürzt die Datei auf die Länge size. Diese Funktion gibt bei Erfolg TRUE, ansonsten FALSE zurück.

        ftruncate ist nicht schlecht. Leider hat es den Nachteil, dass ich immer nur den letzten/die letzten Eintrag/Einträge "abschneiden" kann. Jedoch keinen Datensatz in der Mitte Löschen kann.

        Danke trotzdem für Deine Bemühung.

        Gibt es noch andere Vorschläge?

        Peter

        1. Moin !

          <?php

          $f = file("datei.dat");
          $fp=fopen("datei.dat", "w+");
          for($i=0; $i<count($f); $i++)
          { if(BEDINGUNG, damit der Datensatz NICHT rausgenommen wird)
             fwrite($fp, $f[$i]); }
          fclose($fp);
          ?>