Textdatei durchsuchen und vorgegebenes löschen

empty123

Lt. Commander
Registriert
Mai 2009
Beiträge
1.227
hey,

ich habe hier eine textdatei in der diverse namen zeilenweise drinstehen.
ich möchte davon nun bestimmte per PHP löschen.
also es wird eine seite benötigt in der man einen namen eingibt, es wird dann überprüft ob dieser in der textdatei vorhanden ist und wenn ja soll dieser gelöscht werden.
kann mir bitte jemand nen tipp geben wie ich das anstellen soll? die komplette txt datei löschen wäre ja einfach...

mfg empty123
 
Code:
 $fp=fopen("namen.txt","r");
 
 while($line=fgets($fp,1024)) {
 	preg_match("#(MeinName)#i", $line, $match);
...

also die datei durchgehend.. alle Namen die nicht gelöscht werden in ein array packen, und dann anschliessend per fwrite neu in die (anfangs leere) datei schreiben.

ob man einzelne Zeilen mit php ändern kann weiss ich nicht. Musst du googeln.
 
Ja kann man.
Mit der Funktion file().
Diese liefert jede Zeile als ein Teil eines Arrays zurück. Und spätestens mit "split" oder "explode" würde dass auch gehen PW-toXic.

Anschließend musst du nur jede Zeile durchgehen, die 'bösen' Zeilen löschen, Array als String umwandeln, speichern und fertig.
PHP:
$textfile = file("datei");
foreach ($textfile as $row) {
  # Die IF-Abfrage #
}
# fwrite() etc.
 
na ob ich jetzt ein foreach über das erstellte array von file hab, oder ob ich die datei zeilenweise auslese um mir das array zu bilden aus welchem ich die datei von vorne bis hinten neu erstelle spielt keine rolle... Keins von beiden ist wirklich gut.

Ich meinte es wäre wünschenswert, wenn man direkt in der textdatei eine bestimmte zeile löschen könnte wie man dies mit einem texteditor ja auch macht. Nur aus Effizienzgründen.

Unsere beiden vorschläge machen bildlich folgendes:
Ich öffne die datei.. copy paste den inhalt in eine andere textdatei.. lösche die gewünschten zeilen raus.. copy und paste es erneut in eine andere datei und speicher sie und überschreib damit die alte datei.

nicht gerade optimal, aber ich denk immernoch schnell genug ;)
 
Zurück
Oben