PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeilen in einer Textdatei löschen


chlue
03.12.2005, 15:46:51
Hallo ich such für mein Gästebuch ein Funktion mit der ich die Gästebuch einträge in der Text Datei löschen kann.

Wär nett wenn einer da mir Weiterhelfen kann!!!!

meikel (†)
03.12.2005, 15:48:44
13.4. Wie kann ich in einer Datei eine Zeile einfügen oder löschen?
http://www.php-faq.de/q/q-datei-einfuegen.html

chlue
03.12.2005, 17:13:38
Dank der Hilfe von Meikel habe ich folgendes Script erstellt:
<?php
$old=fopen("gbook.txt","r");

$new=fopen("gbook_".$z.".txt","w+");



while($line=fgets($old,1024)) {
$linepart=explode("%%",$line);
if(trim($linepart[3]) == trim($stamp))
continue; // zeile auslassen

fputs($new,$line);

}

fclose($old);

unlink("gbook.txt");

fclose($new);

rename("gbook_".$z.".txt","gbook.txt");

?>

Meine Frage die ich habe, wie kann ich das Script so optimieren, dass ich nur eine oder mehrere ausgewählten Zeilen löschen kann und nicht mehr alle Zeilen löschen muss???

meikel (†)
03.12.2005, 19:03:11
Meine Frage die ich habe, wie kann ich das Script so optimieren, dass ich nur eine oder mehrere ausgewählten Zeilen löschen kann und nicht mehr alle Zeilen löschen muss???
Das hast Du doch hoffentlich gelesen?
Für dieses Problem gibt es keine elegante oder effiziente Lösung. Die Ursache liegt darin, wie Unix und Windows die unterliegenden Dateien handhaben, nämlich als unstrukturierte Byteströme. Für diese Byteströme gibt es keine Indices und auch keine Methoden, mit denen man effizient beliebige Teile der Datei löschen oder in die Datei einfügen könnte.
[...]
Um in einer Datei eine Zeile einzufügen oder zu löschen, muss man die Datei öffnen und zeilenweise durchlesen und in eine zweite Datei schreiben. Erreicht man die gewünschte Position, muss man dort eine (oder mehrere. meikel) Zeile einfügen oder löschen. Nach Abschluß der Operation ist die Originaldatei zu löschen und die neue Datei umzubenennen.
[...]