angelegte Zeile in Dokument löschen

as333

Erfahrenes Mitglied
Hi,

ich habe folgendes Problem.
Möchte gerne aus einer Datei mehrere Werte löschen.
Die Werte werden zuerst in die Textdatei geschrieben, sollen aber wenn sie nicht mehr benötigt werden gelöscht werden.
Habe folgendes gefunden, nur leider wird so nur der alte Wert überschrieben.
Code:
mixed str_replace  ( mixed $search  , mixed $replace  , mixed $subject  [, int &$count  ] )

Nur hierdurch wird leider nur wie schon beschrieben der alte Wert gelöscht, jedoch wenn jetzt wieder was in die Datei geschrieben werden soll, soll der Wert auch wie der zuvor gelöschte Wert an Position 1 stehen.
Das heißt es soll immer nur eine Zeile in der Datei stehen.

Weiteres Problem ist das die alten Werte Session-Variablen sind und ich mehrere Werte ersetzen muss.

Hat hierfür jemanden ein Tipp wie ich das Problem lösen kann?
 
ok super hat geklappt.
geht es aber auch wenn man jetzt mehrere Zeilen hat und das dann anhand von den Session-Variablen die einzelnen Zeilen gelöscht bzw. überschrieben werden können.
Ich hab da an so eine Art gedacht wenn man sich zum Beispiel einloggt soll eine Zeile mit der Zeit geschrieben werden wenn man sich eingeloggt hat und wenn man sich ausloggt soll die Zeile wieder gelöscht werden.
Das bedeutet wenn mehrere Leute sich gleichzeitig einloggen sollen mehrere Zeilen hinzugefügt werden und jedes Mal wenn sich einer ausloggt die entsprechende Zeile wieder löschen.

Ist das vielleicht auch möglich?
 
Sicher ist das möglich. Ein relativ einfacher Weg wäre:

- Lese mit file() die Datei zeilenweise in ein Array.
- Öffne die Datei mit fopen() im w-Mode.
- Durchlaufe das Array z.B. mit einer foreach-Schleife und führe bei jedem Durchlauf folgendes durch:
* Checke ob in der Zeile ein String vorkommt, der dem entspricht, was du NICHT löschen willst
* Ist das so, schreibe die Zeile in die geöffnete Datei
* Ist es nicht so, mache nichts, sondern lass weiter laufen.

Allerdings gebe ich dir hier den Tipp: Nutze eine Datenbank, die hat diese Features bereits in etwas abstrakter Weise.
 
Zurück