Zeile suchen & auslesen & löschen
FeGm
- php
0 Torpedo Zoidberg0 Chris0 fastix®
Hallo zusammen!
Ich habe eine Textdatei mit folgendem inhalt:
ABC123
DEF456
HIJ789
KLM345
Mein PHP Skript soll dann die Zeile mit dem Inhalt "DEF" ausgeben und sie danach aus der Datei löschen.
Wie kann ich das mit PHP machen?
Ich danke schonmal für alle Antworten, Fegm
Hallo,
versuche die Datei zB zeilenweise in ein Array
zu lesen. Prüfe dann, welche Zeile den
gesuchten Text enthält. Markiere diese Zeile
dann irgendwie und schreibe anschliessend alle
nichtmarkierten Zeilen wieder in die ursprüngliche
Datei.
file, fopen und fputs könnten dabei helfen.
Grüße,
Z.
Hallo,
Ich habe eine Textdatei mit folgendem inhalt:
ABC123
DEF456
HIJ789
KLM345Mein PHP Skript soll dann die Zeile mit dem Inhalt "DEF" ausgeben und sie danach aus der Datei löschen.
Wie kann ich das mit PHP machen?
Das hängt davon ab, wie groß die Textdatei wirklich ist.
Wenn ausreichend Speicher zur Verfügung steht, könnte man die Datei mittels
file()
vollständig in ein Array einlesen. In diesem Array könnte man dann mittels
array_search()
nach dem Index für die Zeile suchen.
Anschließend könnte man mittels
echo htmlentities($filearray[$index],ENT_QUOTES)
die Zeile aisgeben und dann mit
unset ($filearray[$index])
das Element löschen.
Und nun müsste man noch die Datei zurückschreiben. Dafür wäre es sinnvoll, aus dem Array mittels
$stream = implode('',$filearray);
wieder eine Stream zu machen, den man dann z.B. mit
file_put_contents($filename, $stream)
oder einen vergleichbaren Funktion zurückschreiben.
Allerdings darf einen bei diesem gesamten Vorgang niemand anderes stören, sonst gibt es Durcheinander. Um Durcheinander in einer Multiuser-Umgebung zu vermeiden, muss man ich mit File-Locking beschäftigen. Aber das ist ein neues Thema.
LG
Chris
Moin!
Hallo zusammen!
Ich habe eine Textdatei mit folgendem inhalt:
ABC123
DEF456
HIJ789
KLM345Mein PHP Skript soll dann die Zeile mit dem Inhalt "DEF" ausgeben und sie danach aus der Datei löschen.
Wie kann ich das mit PHP machen?
Ich mache sowas am liebsten in einer subshell:
<?php
$strZeile = wget "^DEF" dateiname;
$dummy = cp dateiname dateiname.tmp;
$dummy = wget -v "^DEF" dateiname.tmp > dateiname';
#schreibt alle Zeilen außer der angegebenen zurück.;
?>
Vorteil: rasend schnell, kann reguläre Ausdrücke, spart Speicher...
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®