Textteil aus Textdatei Inhalt entfernen

JFranz

Grünschnabel
Hallo Zusammen,
hab mal wieder ein Prob wo Ich die Lösung weis (bzw. denke wie es geht) aber die Sache will einfach nicht klappen.
Kurz zur Übersicht:
Ich habe eine Textdatei (Aordner.txt) in der in jeder Zeile zB 3 Texte und Zahlen stehen
Head#Namedatei

Angebot 2#1099571801.txt
angebot3#1099576661.txt
Angebot 1#1099570181.txt

Nun habe ich ein Formular das mir in einem Selectfeld ($wahl) jeweils eine Zeile anzeigt,
wenn ich Selectiere wird auch der richtige Wert an mein Skript geschickt:
nun zu meiner Abfrage:

($wahl ist zB: Angebot 1#1099570181.txt)

if ( $action == "killAngebot" )
{
list ($name, $id) = split ("#", $wahl);
$id = stripslashes($id);
$id = str_replace("\r","",$id);
$id = str_replace("\n","",$id);
echo"killen der Datei $id";
echo "Löschen des String<br>".$wahl."<br><br>";
unlink($id);

bis hierhin sollte es gehen
(holen des Dateinamens und löschen der Datei z.B. 1099570181.txt)

nun zu Schritt 2
nun will ich einfach nur noch in meiner Datei (Aordner.txt) für das Selectfeld die nicht mehr benötigte Zeile Löschen:

$fd = fopen ("Aordner.txt", "r+");
$stuff = fread ($fd, filesize ("Aordner.txt"));
fclose ($fd);

leider geht das mit

$stuff = str_replace("$wahl","",$stuff);

$fOrtner = fopen("Aordner.txt","w+");
// neuen Eintrag direkt in die Datei schreiben
fwrite($fOrtner, $stuff);
// Datei schließen
fclose($fOrtner);

nicht, wer kann mit Helfen ?


schonmal Danke, Gruß Jürgen
 
Zuletzt bearbeitet:
Hmm, da gibts viele Wege, einer wäre die Datei in ein Array (http://www.php.net/file)einzulesen, durch dieses zu iterieren und jede Zeile auf das Enthalten der Zahl zu prüfen (http://www.php.net/str_pos z.B.). Wenn diese dann drin ist, löscht du den Wert einfach aus dem Array und zum Schluß schreibst du einfach alles wieder in die Datei.

Ein weiterer Weg wäre ganz einfach die Datei einzulesen, nen passenden RegEx drauf anzulegen (http://www.php.net/preg_replace) und dann wieder in die Datei zu schreiben.
 
Danke erstmal für die Tips, das mit dem
preg_replace($wahl,"",$stuff);
hatte ich auch schonmal versucht
sollte die schnellste lösung sein nur bekomme ich da immer die Fehlermeldung:

Warning: Delimiter must not be alphanumeric or backslash .... . .

hab auch schon die bekannten replaces angewendet
$wahl = stripslashes($wahl);
$wahl = str_replace("\r","",$wahl);
$wahl = str_replace("\n","",$wahl);
aber hilft nix, war auch schon auf der Seite, ist da auch alles recht einleuchtent
hoffe ich finde noch eine Lösung:

nochmals danke

Jürgen
 
Zurück