string Ersetzen Sie in einer großen Datei mit PHP

8

Ich versuche, eine Zeichenfolge für die gesamte Datei in PHP zu ersetzen. Meine Datei ist über 100 MB, also muss ich Zeile für Zeile gehen und file_get_contents() nicht verwenden. Gibt es dafür eine gute Lösung?

    
Brian 29.01.2010, 00:25
quelle

6 Antworten

10

Wenn Sie PHP nicht benötigen, empfehle ich dringend, solche Dinge von der Kommandozeile aus auszuführen. Es ist das beste Werkzeug für den Job und viel einfacher zu bedienen.

In jedem Fall ist der Befehl sed genau das, wonach Sie suchen:

%Vor%

Wenn Sie die Groß- und Kleinschreibung nicht beachten müssen:

%Vor%

Wenn Sie dies dynamisch innerhalb von PHP durchführen möchten, können Sie passthru() :

verwenden %Vor%     
Dominic Barnes 29.01.2010, 01:25
quelle
6

Hier geht's:

%Vor%

Nennen Sie es so:

%Vor%     
Alix Axel 29.01.2010 00:37
quelle
2

Wenn Sie nicht direkt sed von der Kommandozeile verwenden können, weil es eine dynamische Aufgabe ist und Sie es von PHP aufrufen müssen, ist es schwierig, die Syntax richtig zu machen: Sie müssen diese Zeichen in den Such- und Ersetzungszeichenfolgen auf verschiedene Weise entschlüsseln / p> %Vor%

Die folgende Funktion sucht und ersetzt eine Zeichenfolge in einer Datei ohne die gesuchte Zeichenfolge als regulären Ausdruck zu interpretieren. Wenn Sie möchten, können Sie nach der Zeichenfolge ". *" Suchen und sie durch "$" ersetzen.

%Vor%     
Riccardo Galli 26.06.2013 10:22
quelle
1

Holen Sie es ein paar Zeilen gleichzeitig, dump die Variable, die nächsten paar Zeilen.

%Vor%

Sie werden sicherstellen wollen, dass das korrekt ist (nicht getestet). Siehe die Bibliothek in PHP-Dokumentation.

Der schwierige Teil wird in die Datei zurückschreiben. Die erste Idee, die mir in den Sinn kommt, ist das Ersetzen der Zeichenkette, das Schreiben des neuen Inhalts in eine andere Datei und dann am Ende das Löschen der alten Datei und das Ersetzen durch die neue Datei.

    
Tyler Carter 29.01.2010 00:26
quelle
1

so etwas?

%Vor%     
ghostdog74 29.01.2010 00:57
quelle
1

Ich hätte 'sed' expliziter verwendet, so dass Sie weniger von Ihrem System abhängig sind.

%Vor%     
Jerome 04.10.2012 09:22
quelle

Tags und Links