Bestimmte Zeilen einer Textdatei löschen

dragonlord

Erfahrenes Mitglied
Hallo,

ich habe eine TextDatei die so aufgebaut ist:
Code:
1|||06.01.2005||Donald Duck|||Suche|||---ende---|||
2|||05.01.2005|||Dagobert Duck|||Suche|||---ende---|||
3|||27.05.2004|||Mieky Maus|||Suche|||---ende---||| 
4|||15.09.2004|||Roger Moore|||Suche|||---ende---|||

Wie kann ich eine bestimmte Zeile aus dieser Datei löschen?
 
Hmm....keine Ahnung wie das geht. Also die Datei in ein Array ist klar.

Aber wie lösche ich eine bestimmte Zeile deren erstes Zeichen z.b. 3 ist?
 
unset... und dann? Ich kenne ja nicht die Anzahl der Arrays. Da die Datei ja weiss ich wieviele Zeilen enthält.?


Irgendwie raff ich das nicht 'Kopfkratz*
 
Mach doch einfach einen Vergleich. Die Daten werden neu geschrieben, wenn die Löschbedingung nicht erfüllt ist.
 
Code:
$data=explode("\r\n",$file); // Array mit den einzelnen Zeilen erstellen
unset($data[1]); // 2. Zeile löschen
$new="";
foreach($data as $row) // Alle Reihen nacheinander durchgehen
{
  $new.=$row; // Aktuelle Reihe dazuschreiben
}
fwrite($file, $new); // Neuen Inhalt in die Datei schreiben
So in grob...
 
PHP:
$file=file("deinedatei.txt");
	$a=0;
	foreach($file as $zeile)
	{
	$zeile_explode=explode("|||",$zeile);
		if($zeile_explode[0]==$id)
		{
		unset($file[$a]);
		$newinhalt=fopen("deinedatei.txt","w");
		fputs($newinhalt,implode("",$file));
		fclose($newinhalt);
		}
	$a++;
	}

Gruss :)
 
Funktioniert super. Allerdings habe ich das Problem, wenn die letzte Zeile der Textdatei gelöscht wird, dass dann ein Absatz in der Datei bleibt! Vorschlag?
 
Zurück