Hello,
ich brauch ganz dringend eure Hilfe.
Wie durchsuche ich eine txt datei z.B. nach einem Wort und dass dann der Zeiger dort stehen bleibt und dort dann auch schreibt??
Bisher habe ich immer nur an das Ende der Datei geschrieben.
Mit solchen, die man früher als "Textdatei" bezeichnte, geht das nicht. Das wären heute bei PHP der Öffnungsmodus 'a' oder 'a+'. Die lassen sich nur vorwärts lesen und hinter dem Ende beschreiben.
Also eine Datei mit wahlfreiem Zugriff. Öffnungsmodus 'r+' oder 'rb+'
Wie groß ist die Datei? Passt sie noch in den Speicher?
Sollen nur genauso viele Zeichen wieder geschreiben werden, wie gelesen wurden, oder hat die Ersatzzeichenkette eine andere Länge?
Textdatei hieße, dass die Datei eine innere Organsisation hätte, also in "Zeilen" aufgeteilt ist.
Kann der gesuchter Begriff sich über eine Zeilengrenze hinweg erstrecken?
Anderenfalls kannst Du mit fgets() die Datei zeilenweise einlesen, Die mit ftell() die Position des Dateizeigers nach dem Lesen besorgen, mit strpos() die Position des gesuchten Textes in der gelesenen "Zeile" bestimmen und den Text austauschen z.B. mit str_replace oder mit substr(). Du kennst die Länge der Zeile und die leztzte Dateizeiger-Position. Daraus kannst Du Dir die Position für den Anfang der Zeile errechnen und mit fseek() den Dateizeiger wieder dorthin stellen. mit fwrite() kannst Du jetzt genausoviele Bytes überschreiben lassen, wie Du willst.
Da die Zeile aber eine definierte Länge hat, musst Du genau soviele Bytes auch wieder schreiben, wenn Du die Datei nicht kaputt machen willst.
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)
