string ersetzen, in eine große Datei mit php
Ich versuche, einen string ersetzen für gesamte Datei in PHP. Meine Datei ist über 100 MB, so dass ich gehen Zeile für Zeile und können nicht file_get_contents()
. Gibt es eine gute Lösung dazu?
- Ist es nötig, die PHP verwenden? Wenn Sie Zugriff auf die Befehlszeile, die Sie verwenden könnten, die
sed
Befehl zu führen dieselbe Funktion aus, wahrscheinlich mit viel weniger Kopfschmerzen. Wenn es braucht, um automatisiert werden, können Sie ein shell-Skript, das läuft auf cron. - Vereinbart, dies ist etwas für die Kommandozeile, nicht PHP.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie sind nicht erforderlich, um PHP zu benutzen, würde ich empfehlen die Durchführung Dinge wie diese von der Befehlszeile aus. Es ist byfar den besten Werkzeug für den job, und viel einfacher zu verwenden.
In jedem Fall, die
sed
(Stream-Editor) Befehl ist, was Sie suchen:Wenn Sie brauchen, Fall-Unempfindlichkeit:
Wenn Sie benötigen diese, um auszuführen, dynamisch in PHP, die Sie verwenden können
passthru()
:passthru()
und nichtexec()
?Hier gehen Sie:
Nennen mag:
Wenn Sie nicht verwenden können, die direkt der sed von der Kommandozeile, weil es eine dynamische Aufgabe und du musst es von php ist es schwierig, die syntax Recht: Sie müssen fliehen in unterschiedlicher Weise in die suchen und ersetzen-strings werden diese Zeichen
Folgende Funktion suchen und ersetzen einer Zeichenfolge in einer Datei ohne interpretieren die gesuchte Zeichenkette als regulären Ausdruck. Also, wenn Sie wollten, könnten Sie die Suche nach der Zeichenfolge ".*" und ersetzen mit "$".
Bekommen Sie ein paar Zeilen in einer Zeit, dump die variable, bekommen Sie die nächsten paar Zeilen.
Sind Sie gehen zu wollen, um sicherzustellen, dass diese korrekt ist (noch nicht getestet). Finden Sie in der Bibliothek auf In der PHP-Dokumentation.
Der schwierige Teil wird das zurückschreiben in die Datei. Die erste Idee, die pops in meinem Kopf ist, machen den string zu ersetzen, schreiben Sie den neuen Inhalt in eine andere Datei, und dann, am Ende, löschen Sie die alte Datei und ersetzen Sie es durch ein neues.
sowas?
Ich würde verwendet haben, " sed " in eine explizitere Weise, so sind Sie weniger abhängig von Ihrem system.