Ersetzen von Zeilen in Textdateien basierend auf Wortabgleich mit PHP
In Szenarien, in denen die Zeilennummer unbekannt ist, Ersetzen bestimmter Zeilen basierend auf Wörtern Matching kann eine herausfordernde Aufgabe sein. Glücklicherweise bietet PHP mehrere effektive Ansätze, um dieser Situation zu begegnen:
Für kleinere Dateien (in den Speicher passen):
- Lesen Sie die gesamte Datei in ein Array von Zeilen mit file('myfile').
-
Erstellen Sie eine Funktion, um die gewünschte Zeile zu ersetzen, z replace_a_line($data):
- Überprüfen Sie mit stristr($data, 'certain word'), ob die Zeile das Zielwort enthält.
- Wenn gefunden, geben Sie die Ersetzungszeile als a zurück string.
- Andernfalls wird die ursprüngliche Zeile zurückgegeben.
- Wenden Sie die Ersetzungsfunktion auf jede Zeile an im Array mit array_map('replace_a_line', $data).
- Schreiben Sie das geänderte Array mit file_put_contents('myfile', $data) zurück in die Datei.
-
Verbessern Sie die Methode durch Verwendung von Lambda-Funktionen zur Vereinfachung der array_map:
- $data = array_map(function($data) { ... }, $data);
Für größere Dateien (speicherintensiv):
- Öffnen Sie die Datei zum Lesen und Schreiben mit fopen('myfile', 'r') und fopen('myfile.tmp', 'w') bzw..
- Setzen Sie ein Flag, um anzuzeigen, ob eine Ersetzung vorgenommen wird ($replaced).
- Lesen Sie jede Zeile in der Eingabedatei mit fgets($reading).
- Überprüfen für das Vorhandensein des Zielworts mit stristr($line, 'bestimmtes Wort').
- Wenn gefunden, ersetzen Sie die Zeile durch das geänderte Version.
- Schreiben Sie die aktualisierte Zeile mit fputs($writing, $line) in die Ausgabedatei.
- Schließen Sie die Dateihandles nach der Verarbeitung.
- Ersetzen Sie die Originaldatei durch die geänderte Datei nur, wenn eine Ersetzung vorgenommen wurde (rename('myfile.tmp', 'myfile')) oder die temporäre Datei löschen, wenn keine Ersetzung erforderlich war (unlink('myfile.tmp')).
Das obige ist der detaillierte Inhalt vonWie ersetze ich Zeilen in Textdateien basierend auf der Wortübereinstimmung in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!