Ersetzen von Inhalten

bf-wiesbaden

Grünschnabel
Hallo liebe Gemeinde,

ich habe ein Problem beim Ersetzen von Inhalten in einer Datei.
Es soll eine Datei geöffnet werden, Inhalte ersetzt (bei mir "(" und ")" ) und das Ergebnis wieder in die ursprüngliche Datei geschrieben werden.

Hier meine Vorgehensweise:

$fp=fopen($datei,"a+");
$array = file($datei); // Datei in ein Array einlesen

for ($x = 0; $x < count($array); $x++) {
$cleanstr1 = str_replace("(","",$array[$x]);
$cleanstr2 = str_replace(")","",$cleanstr1);
echo $cleanstr2."<br>";
fWrite ($fp , $cleanstr2);
}

Der überarbeitete Inhalt wird leider nur angefügt und der alte nicht gelöscht.
Hat jemand eine Idee?

Vielen Dank im Voraus.
Liebe Grüße.
fClose ($fp); // Datei schließen
 
1. Verwende bitte die Code-Tags zum Anzeigen deiner Codes hier in den Beiträgen ([ PHP] und [ /PHP] etc. (ohne Leerzeichen))

2.

bei fopen musst du den Mode auf "w+" setzten:

PHP:
$fp=fopen($datei,"w+");
 
Zuletzt bearbeitet:
Das Problem liegt hier:

$fp=fopen($datei,"a+");

'a+' Öffnet die Datei zum Lesen und Schreiben. Positioniert den Dateizeiger auf das Ende der Datei. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

Versuch statt dessen:

$fp=fopen($datei, "w+"); oder $fp=fopen($datei, "w");

w' Öffnet die Datei nur zum Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert wird versucht sie anzulegen.
'w+' Öffnet die Datei zum Lesen und Schreiben und setzt den Dateizeiger auf den Anfang der Datei sowie die Länge der Datei auf 0 Byte. Wenn die Datei nicht existiert, wird versucht sie anzulegen.

Quelle:
http://de.php.net/manual/de/function.fopen.php
 
Wenn ich den Schalter W bei
PHP:
fopen
verwende, dann wird der Inhalt der Datei gelöscht. Hatte das vorher schon probiert und bin letztendlich daran auch gescheitert.
 
Es ist schon richtig, dass ich den alten Inhalt löschen und den korrigierten in das File schreiben möchte.
Nur schreibt er den neuen Inhalt nicht.
Das ist mein Problem.
 
Nach einigem ausprobieren hab ich was herausgefunden:

Wenn du das File mit fopen($datei, "w+"); öffnest, dann löscht es den Inhalt bereits und die Funktion file() findet keine Daten mehr darin. Das heisst $array ist leer.

PHP:
<?php
$datei = "beispiel.txt";
$array = file($datei); // Datei in ein Array einlesen

$fp=fopen($datei,"w+");
for ($x = 0; $x < count($array); $x++) {
	$cleanstr1 = str_replace("(","",$array[$x]);
	$cleanstr2 = str_replace(")","",$cleanstr1);
	echo $cleanstr2."<br>";
	fwrite($fp, $cleanstr2);
}
fclose($fp);
?>

Das müsste funktionieren.
 
Ich Hirni.
Sollte das nächste Mal zuerst meinen eigenen Code richtig lesen udn dann posten.
Hätte mir das dann sparen können.
Natürlich ist es so, wie Igäl geschrieben hat.
Euch allen vielen Dank und noch einen schönen Tag.
 
Zurück