Inhalt in einer bestimmten Zeile ersetzen
Paulchen
- php
Hi,
wie kann ich in einer .txt Datei ein teil des Inhalts in einer bestimmten Zeile ändern?
Mit $inhalt = str_replace('!test', 'test', $file);
wird ja alles geändert, wo !test steht.
Gibt es die Möglichkeit, dass der Inhalt nur in Zeile 24 geändert wird und nicht in Zeile 20 oder 26?
Mein Code.
$file = fopen("bla.txt","r+");
$inhalt = str_replace('!test', 'test', $file);
fwrite($file, $inhalt);
fclose($file);
Hoffe, mir kann da jemand helfen :)
Viele Grüße
Paulchen
Hello,
Gibt es die Möglichkeit, dass der Inhalt nur in Zeile 24 geändert wird und nicht in Zeile 20 oder 26?
Variante 1, für große Dateien:
------------------------------
Lies die Datei zeilenweise ein und zähle die Zeilen mit. Gib die Zeilen in eine zweite Datei wieder aus. Wenn Du bei der passenden Zeile der Quelldatei angekommen bist, führe die Änderung durch, bevor Du die Datei ausgibst. Wenn Du fertig bist, kannst Du die alte Quelle umbenennen in *.bak (oder so ähnlich) und der neuen Datei den alten namen geben.
Variante 2, für Dateien, die bequem in den Speicher passen:
-----------------------------------------------------------
Lies die alte Datei z.B. mit file() ein.
Ändere im Speicher die Daten der Zeile im Array.
Schreibe das Array in die Datei zurück
Kürze die neue Datei auf die passende Länge.
Beachte hierzu auch den Artikel für konkurrierendes Arbeiten mit Daten von Christian Seiler:
http://aktuell.de.selfhtml.org/artikel/programmiertechnik/dateisperren/
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Guten Abend.
wie kann ich in einer .txt-Datei ein Teil des Inhalts in einer bestimmten Zeile ändern?
Zum Beispiel:
Datei komplett einlesen, anhand der Zeilenendezeichen (\n, \r oder \r\n (oder war's \n\r?)) den Anfang und das Ende der gewünschten Zeile bestimmen, zwischen diesen Positionen Änderung durchführen, Datei komplett speichern.