Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zeile aus Texdatei löschen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Zeile aus Texdatei löschen

    Hallo,

    Ich bin ein absoluter Anfänger, mein Problem ist:

    Ich habe eine Textdatei die so aussieht:

    Test
    Muster
    Maier

    Es soll eine bestimmte Zeile gelöscht werden und zwar durch Angabe von dem Inhalt.

    Ich übergebe also mit Post aus einer anderen Seite z.B. Muster,
    dann soll er Muster aus der Textdatei löschen, so das sie dann so aussieht.

    Test
    Maier

    Ich habe schon zich Sachen probiert und komm auf keinen grünen Zweig.
    Das beste Ergbins hab ich mit str_replace erreicht, allerdings ersetze ich damit nur einen Text durch nichts. Der Absatz, also die Leerzeile bleibt.

    Kann mir wer ein kleines Script anbieten, das mir hilft?

    Vielen Dank im Vorraus.

  • #2
    Bei der Ersetzung mußt Du das jeweilige Zeilenende berücksichtigen, unter Windows bspw. "\r\n" . Das macht die Leerezeile aus. Im einfachsten Falle ersetzt Du also so:
    PHP-Code:
    $fulltext_new str_replace ($suchbegriff "\r\n" '' $fulltext); 
    Für generelles zeilenweises Arbeiten kann aber auch ein Weg über Arrays via
    file () , str_replace () , implode () sinnvoll sein. Ist Geschmackssache.

    Nachtrag: Andere Betriebssysteme oder Dateiformate benutzen u.U. andere Zeilenendzeichen. Wenn Du die Verwendung eines bestimmten Zeilenendzeichens nicht garantieren kannst, kann es nötig sein, einen regulären Ausdruck zu verwenden.

    Btw: Willkommen im Forum!
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Datei als Array einlesen:
      PHP: file - Manual

      Mit foreach durchlaufen und bei Treffer auf gleichen Wert, unset:
      PHP: unset - Manual

      Werte wieder zusammensetzen:
      PHP: implode - Manual

      Und in Datei zurueckschreiben:
      PHP: file_put_contents - Manual
      "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

      Kommentar


      • #4
        Bei der Variante von nikosch funktioniert das mit \r\n nicht. Wenn ich nur \n mache bekomm ich wieder die Ausgabe mit Leerzeile.
        Das ist ein Webpacket von 1und1 also Linux. Nebenbei, da läuft die PHP-Version 4.4.8.

        Mein Script dazu:
        PHP-Code:
        <?php
        $datei 
        "datei.txt";
        $kommentar file($datei);
        $suchbegriff "muster";
         
        // Daten löschen
        $fulltext_new str_replace ($suchbegriff "\n" '' $kommentar); 
        // Daten anzeigen
        while( list ( $key$val ) = each $fulltext_new ) )
        {
        echo 
        $val '<br>';
        }
        ?>

        Kommentar


        • #5
          An den vorschlag von Chris hab ich auch schon gedacht,
          allerdings bin ich zu unerfahren um das hinzubekommen.

          Mein Versuch:
          PHP-Code:
          <?php
          $datei 
          "datei.txt";
          $kommentar file($datei);
          $match "muster";
          foreach (
          $datei as $line) {
          unset(
          $line[$match]); 
          }
          $neu=implode("",$line); 
          while( list ( 
          $key$val ) = each $neu ) )
          {
          echo 
          $val '<br>';
          }
          ?>
          Mit file_put_contents bekomm ich nur ne Fehlermeldung.

          Script damit:
          PHP-Code:
          <?php
          $datei 
          "datei.txt";
          $kommentar file($datei);
          $match "muster";
          foreach (
          $kommentar as $line) {
          unset(
          $line[$match]); 
          }
          $neu=implode("",$line); 
          file_put_contents($datei$neu);
          ?>

          Kommentar


          • #6
            Ist doch nicht weiter schwer oder?
            PHP-Code:
            <?php
            $filename 
            "test.txt";
            $delete $_POST["delete"];
            $file file($filename);
            $file array_map("trim"$file);
            unset(
            $file[array_search(trim($delete), $file)]);
            file_put_contents($filename$fileFILE_TEXT);
            ?>
            Aufruf dann über ein Formular (mode: Post) mit dem textfeld name="delete"
            [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

            Kommentar


            • #7
              Genau das ist, was ich gesucht habe.
              Danke nochmal.

              Kommentar


              • #8
                Zitat von Frank Beitrag anzeigen
                PHP-Code:
                <?php
                $file 
                file($filename);
                $file array_map("trim"$file);
                unset(
                $file[array_search(trim($delete), $file)]);
                file_put_contents($filename$fileFILE_TEXT);
                ?>
                Ähhäm, wird da nicht genau 'Array' in der Datei stehen? Kein implode?
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  @nikosch: nö: [man]file_put_contents[/man]

                  Kommentar


                  • #10
                    Ah, ahaa.
                    You can also specify the data parameter as a single dimension array. This is equivalent to file_put_contents($filename, implode('', $array)).
                    Cool, das war mir neu...
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar

                    Lädt...
                    X