# Bestimmte Zeilen einer Textdatei löschen



## dragonlord (6. Januar 2005)

Hallo,

ich habe eine TextDatei die so aufgebaut ist:

```
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?


----------



## Timbonet (6. Januar 2005)

Datei in ein Array einlesen und dieses bis auf die zu löschende Zeile wieder in die Datei schreiben.


----------



## dragonlord (6. Januar 2005)

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?


----------



## Oliver Gringel (6. Januar 2005)

```
unset($array[2]);
```
Damit löscht du den dritten Eintrag deines Arrays.


----------



## dragonlord (6. Januar 2005)

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*


----------



## Timbonet (6. Januar 2005)

Mach doch einfach einen Vergleich. Die Daten werden neu geschrieben, wenn die Löschbedingung nicht erfüllt ist.


----------



## theCean (7. Januar 2005)

```
$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...


----------



## soraxdesign (7. Januar 2005)

```
$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


----------



## nbrunotte (3. Februar 2005)

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?


----------

