letzte Zeile aus Textdatei ersetzen (ohne array)
PHP Zwerg
- php
Hallö,
bin auf der Suche nach einer Möglichkeit aus einer Textdatei die letzte Zeile zu ersetzen (auslesen, verändern, schreiben).
Das ganze läuft ohne Probleme wenn ich die gesamte Datei in ein array auslese, dort die letzte Zeile editiere und die Datei dann komplett mit dem array überschreibe. Meine Befürchtung ist aber, dass es unnötig Performance kostet wenn man 1234567890 ;-) Zeilen in der Datei hat. Dann wär's auf jeden Fall besser nur die letzte Zeile anzufassen...
Danke für Eure Hilfe!
echo $begrüßung;
bin auf der Suche nach einer Möglichkeit aus einer Textdatei die letzte Zeile zu ersetzen (auslesen, verändern, schreiben).
Das ganze läuft ohne Probleme wenn ich die gesamte Datei in ein array auslese, dort die letzte Zeile editiere und die Datei dann komplett mit dem array überschreibe. Meine Befürchtung ist aber, dass es unnötig Performance kostet wenn man 1234567890 ;-) Zeilen in der Datei hat. Dann wär's auf jeden Fall besser nur die letzte Zeile anzufassen...
Auf dem Dateisystem existiert das Konzept "Zeilen" nicht. Tom vergleicht Dateien gern mit einem Faden. Alles hängt hintereinander. In unregelmäßigen Abständen befindet sich ein Knoten, der einen Zeilenumbruch symbolisiert. Wenn du den Teil vom letzten Knoten bis zum Ende oder vielleicht auch den zwischen vorletztem und letzten Knoten (wenn die letzte Zeile mit einem Zeilenumbruch abgeschlossen ist) haben möchtest, dann bleibt dir nur, den Faden komplett abzutasten. Wie lang der ist, ist dabei unerheblich.
Selbst wenn du PHPs Hilfsmittel file() - oder file_get_contents() plus String-Funktionen - nicht verwendest, musst du die Datei komplett einlesen, und neu schreiben. Du kannst das auch schrittweise mit fopen() sowie fgets() und seinen Verwandten machen, musst dann aber irgendwie zwischen einlesen und ausgeben mindestens eine Zeile puffern, damit du die dann beim Erkennen des Dateiendes noch ändern kannst, bevor du sie wegschreibst.
echo "$verabschiedung $name";
Hello,
Das ganze läuft ohne Probleme wenn ich die gesamte Datei in ein array auslese, dort die letzte Zeile editiere und die Datei dann komplett mit dem array überschreibe. Meine Befürchtung ist aber, dass es unnötig Performance kostet wenn man 1234567890 ;-) Zeilen in der Datei hat. Dann wär's auf jeden Fall besser nur die letzte Zeile anzufassen...
PHP kan Dateien mWn nicht "von hinten" lesen, sondern nur wahlfrei.
Du könntest jetzt also einen genügend großen Block am Ende der Datei lesen, und den rückwärts durchforsten nach einem Zeilenumbruch. Ist keiner enthalten, musst Du noch einen Block einlesen usw.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hello,
Du könntest jetzt also einen genügend großen Block am Ende der Datei lesen, und den rückwärts durchforsten nach einem Zeilenumbruch. Ist keiner enthalten, musst Du noch einen Block einlesen usw.
Dabei könnte Dir http://de.php.net/manual/en/function.strrev.php helfen.
für multibyte-codierte Dateien konnte ich leider nichts finden...
mb_strrev() scheint es nicht zu geben.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg