Bestimmte Inhalte einer Textdatei löschen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bestimmte Inhalte einer Textdatei löschen

    Hallöchen,
    habe ein kleines Probelm. Ich schreibe in eine Textdatei verschiedene Datensätze, die alle voneinander durch | getrennt sind. Die einzelnen Daten des Datensatzen sind getrennt durch ; .
    Wie kann ich jetzt, wenn ich einen Datensatz hereingeschrieben habe, diesen wieder herauschreiben bzw. löschen?
    Komme einfach nicht dahinter! Wenn ich versuche mit der Funktion unlink(); den Datensatz entferne, ist bloß die Varianel leer, aber in der Datei steht das Ding immer noch drin!
    Bitte um Hilfe.
    Vielen Dank!
    Mario Heiß IT-Services

  • #2
    Hi,
    Du könntest Die Datensätze in ein Array lesen ind dann mit
    array_splice() arbeiten:

    #Einlesen der Daten in $array
    $dataNr = 3;
    #Nummer des Datensatzes (beginnend bei null)

    array_splice($array, $dataNr, 1);


    MfG
    Juggler
    MfG
    Juggler

    Kommentar


    • #3
      Hach bin ich vergesslich...

      Den Inhalt des Arrays musst du dann wieder entsprechend zusammenbauen und wieder in die Datei zurückschreiben:

      Code:
          $new = ; #Code zum Zusammenbau
          $fp = fopen"pfad/datei.txt", "w+");
          rewind($fp);
          fwrite($fp,$new);
          fclose($fp);
      MfG
      Juggler
      MfG
      Juggler

      Kommentar


      • #4
        Problem besteht noch immer

        Hallöchen,
        danke erst mal für Deine Nachricht und den Tip.
        Das Problem ist aber doch etwas komplexer. Ich habe die einzelnen Elemente schon in einem Array.
        Irgendwie funktioniert es aber nicht ganz mit dem neu "hereinschreiben" in die Datei.
        Wie gesagt es ist etwas komplexer. Kann ich Dir vielleicht mal die Script zumailen und Du schaust Sie Dir mal an?
        MfG
        Mario Heiß
        Mario Heiß IT-Services

        Kommentar


        • #5
          Dann baust du das Ding wahrscheinlich per Schleife zusammen ... benutz doch einfach implode, dann kannst du auch unset benutzen. array_splice macht nämlich genau das gleiche wie unset, nur mit beliebig vielen aufeinander folgenden Elementen.

          Nebenbei: Wenn du das '+' aus dem open-Modus rausläßt, kannst du dir das rewind sparen.

          Code:
          $filename = 'pfad/datei.txt';
          $dataNr = 3; 
          
          $array = file($filename);
          unset($array[$dataNr]);
          $new = implode('', $array); #Code zum Zusammenbau
          $fp = fopen ($filename, 'w');
          fwrite($fp,$new);
          fclose($fp);
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar

          Lädt...
          X