Ankündigung

Einklappen
Keine Ankündigung bisher.

Text Zeilen löschen per PHP

Einklappen

Neue Werbung 2019

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

  • Text Zeilen löschen per PHP

    Hi,
    ich suche ein Script womit ich bestimmte Zeilen löschen kann.

    Als Beispiel möchte ich aus dieser Liste, #r3 mit dem darunter liegenden Zeilelöschen.

    Code:
    #r1
    RewriteRule ^linkus(\.html?)$ index.php?show=linkus [QSA]
    #r2
    RewriteRule ^login(\.html?)$ index.php?show=login [QSA]
    #r3
    RewriteRule ^registrieren(\.html?)$ index.php?show=registrieren [QSA]
    #r4
    RewriteRule ^passwortvergessen(\.html?)$ index.php?show=passwortvergessen [QSA]
    #r5
    RewriteRule ^impressum(\.html?)$ index.php?show=impressum [QSA]
    
    #r6
    RewriteRule ^neu(\.html?)$ index.php?show=neu[QSA]
    #r7
    RewriteRule ^neu(\.html?)$ index.php?show=neu[QSA]

  • #2
    Mal abgesehn davon, dass diese Ausdrücke nicht ganz korrekt sind, könnte man mit file() und substr() die Postion bzw. Zeilennummer von #r3 abfragen.
    Dabei das ganze in ein zusätzliches Array einlesen.
    Alles was nicht mehr gebraucht wird, wird auch nicht in das zusätzliche Array eingelesen.
    Am Ende dann das zusätzliches Array nehmen und damit die Datei neu schreiben.
    Ungefähr so ...

    Kommentar


    • #3
      Also mit einer erklärung komme ich jetzt nicht weiter, vieleicht wäre ein Beispiel sehr Hilfreich.

      Kommentar


      • #4
        Sorry, wenn ich nicht immer fetige Lösungen bringe.
        Beispiel zu file, substr() und Benutzung von Arrays sind wohl im PHP-Handbuch mehr als genug.
        Der Rest ist nur "ein wenig" Kopf benutzen

        Versuch es doch erst mal, und wenn es dann nicht geht, gibt es auch mehr Hilfe.

        Kommentar


        • #5
          Habe mir jetzt mal einen code besorgt, hier habe ich jetzt aber das Problem das array_search nicht funktioniert und ich weiß nicht wieso.

          PHP-Code:
          $file explode("\n"file_get_contents('test.txt'));
          $number array_search('#r3',$file);
          unset(
          $file[$number]);
          unset(
          $file[$number+1]);
          file_put_contents('test.txt'implode("\n",$file)); 

          test.txt:
          Code:
          #r1
          RewriteRule ^linkus(\.html?)$ index.php?show=linkus [QSA]
          #r2
          RewriteRule ^login(\.html?)$ index.php?show=login [QSA]
          #r3
          RewriteRule ^registrieren(\.html?)$ index.php?show=registrieren [QSA]
          #r4
          RewriteRule ^passwortvergessen(\.html?)$ index.php?show=passwortvergessen [QSA]
          #r5
          RewriteRule ^impressum(\.html?)$ index.php?show=impressum [QSA]
          #r6
          RewriteRule ^neu(\.html?)$ index.php?show=neu[QSA]
          #r7
          RewriteRule ^neu(\.html?)$ index.php?show=neu[QSA]

          Kommentar


          • #6
            Naja, mein erster Gedanke wäre:

            PHP-Code:
            $string "
            #r1 
            RewriteRule ^linkus(\.html?)$ index.php?show=linkus [QSA] 
            #r2 
            RewriteRule ^login(\.html?)$ index.php?show=login [QSA] 
            #r3 
            RewriteRule ^registrieren(\.html?)$ index.php?show=registrieren [QSA] 
            #r4 
            RewriteRule ^passwortvergessen(\.html?)$ index.php?show=passwortvergessen [QSA] 
            #r5 
            RewriteRule ^impressum(\.html?)$ index.php?show=impressum [QSA] 
            #r6 
            RewriteRule ^neu(\.html?)$ index.php?show=neu[QSA] 
            #r7 
            RewriteRule ^neu(\.html?)$ index.php?show=neu[QSA]
            "
            ;

            $file explode("\n"$string);

            for ( 
            $i 0$i count($file); $i++ ) {

            if ( 
            stristr($file[$i], '#r3') ) $i += 2;

            echo 
            $file[$i], '
            '
            ;


            Setzt natürlich voraus, dass zwischen den Zeilen keine Leerzeilen kommen.
            Was oben jetzt bei echo rauskommt, wird dann wieder in die Datei geschrieben.
            Anstelle von explode() kann dann auch file() benutzt werden, damit sind dann schon alle Zeilen in einen Array.

            EDIT:
            Ist jetzt nur eine Möglichkeit von vielen.

            Kommentar


            • #7
              Zitat von mokus
              Habe mir jetzt mal einen code besorgt, hier habe ich jetzt aber das Problem das array_search nicht funktioniert und ich weiß nicht wieso.

              PHP-Code:
              $file explode("\n"file_get_contents('test.txt'));
              $number array_search('#r3',$file);
              unset(
              $file[$number]);
              unset(
              $file[$number+1]);
              file_put_contents('test.txt'implode("\n",$file)); 
              Meine Güte dann lass dir halt mit var_dump() ausgeben, was wirklich in $file und seinen Elementen steht.

              Kommentar


              • #8
                habs jetzt auch so hinbekommen.

                PHP-Code:
                $Datei "";
                $file explode("\n"file_get_contents('test.txt'));

                for ( 
                $i 0$i count($file); $i++ ) {

                if ( 
                stristr($file[$i], '#r3') ) $i += 2;

                $Datei $Datei.$file[$i];
                }
                file_put_contents('test.txt'$Datei); 

                Kommentar


                • #9
                  $file = explode("\n", file_get_contents('test.txt'));
                  Warum denn so kompliziert ?

                  $file = file('test.txt');

                  Kommentar


                  • #10
                    Sorry, aber
                    $file = explode ("\n", file_get_contents('test.txt'));
                    und
                    $file = file ('test.txt');

                    liefern nicht immer das selbe Ergebnis. Was auch die Erklärung sein könnte, weshalb die Variante oben mit array_search nicht funktioniert hat: Ja nach Betriebsystem wird \n, \r oder eine Kombination aus beiden Zeichen als Zeilenumbruch verwendet. file () behält diese bei, und bei einem explode ('\n' , ...) könnte evl. ein restliches \r überbleiben. array_search findet dann u.U. nix, weil z.B. '#r3' ungleich '#r3\r' ist. Mal nur so eine Vermutung...

                    Außerdem aufpassen, was array_search () liefert, wenn der String nicht vorhanden ist, sonst wird Dir nämlich mal ganz fix Index 0 (Zeile 1) gelöscht.
                    This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.
                    [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


                    • #11
                      und wenn man einfach so macht?
                      PHP-Code:

                      $datei
                      ="dateiname";
                      file_put_contents($datei,preg_replace('/#r3\s+[^\n]+\n/s','',file_get_contents($datei))); 
                      Slava
                      http://bituniverse.com

                      Kommentar

                      Lädt...
                      X