Text zwischen #1anfang und #1ende mit PHP aus einer Datei löschen ?



  • Hallo,

    ich möchte mit PHP in eine Datei (datei.txt) einen Text ->AM ENDE<- anfügen !

    Das problem ist dass ich den eingefügten Text auch wieder aus der Datei löschen möchte -- er dann aber z.B. wenn ich schon öfter Texte eingefügt habe der Text nichmehr am Ende steht sondern ingendwo !

    Hat jemand eine Idee wie ich z.B. den Text der sich zwischen:
    "#1anfang"
    und
    "#1ende"
    befindet löschen kann ?

    Also kann man nach z.B. dem Schlüsselwort "#1anfang" und "#1ende" suchen und dann das und den Text dazwischen löschen ?

    --

    .. würde mich über jede Antwort freuen,
    Grüße Frederik



  • Hallo.

    - Datei öffnen und Inhalt komplett einlesen
    - Möglichkeit 1: Den Anfang (#anfang1) und das Ende (#ende1) mit strpos() suchen, Positionen merken und den dazwischenliegenden Teil mit substr_replace() durch ein "" ersetzen -> langsam
    - Möglichkeit 2: Gibt es den Anfang und das Ende nur einmal, kannst du das auch über preg_replace machen:

    $str = preg_replace("#anfang(.*?)ende#si","anfang\nende",$str);
    

    -> schneller, ersetzt aber alle Vorkommen von Anfang und Ende.

    Eine gute Einführung in die Welt der regulären Ausrücke gibt es hier.

    - dem Dateinhalt nun noch bei Bedarf Strings anhängen:

    $str .= "\nNeue Zeile1\nNeue Zeile2";
    

    - Datei wieder speichern. - Fertig.

    Bye.



  • Falls du nur etwas anhängen willst: bei fopen a(+) angeben oder fseek mit SEEK_END und dann einfach mit fwrite reinschreiben


Anmelden zum Antworten