Problem mit regulärem Ausdruck...

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

  • Problem mit regulärem Ausdruck...

    Ich habe eine Textdatei, die so aufgabaut ist:


    Nicka;Info1;Info2;Info3;Info4;Info5
    Nickb;Info1;Info2;Info3;Info4;Info5
    Nickc;Info1;Info2;Info3;Info4;Info5
    Nickd;Info1;Info2;Info3;Info4;Info5



    Diese Datei lese ich in eine beliebige Variable ($test).

    Nun will ich z.B. die Zeile mit "Nickb" löschen.

    Und habe das so gemacht:
    PHP-Code:
    $var[0]="Nickb";
    $testereg_replace("($var[0])(;.*){5}(\n)","",$test); 
    Allerdings löscht er mir dann nicht nur diese Zeile sondern auch alle nachfolgenden.
    Also so, dass am Ende nur noch

    Nicka;Info1;Info2;Info3;Info4;Info5

    in der Textdatei steht. Warum?

  • #2
    Warum löschst du die Zeile nicht einfach direkt beim Einlesen der Datei, bevor du alles in die Variable $test schreibt bzw. läßt erst gar nicht zu, daß deine "Wunschzeile" in die Variable $test geschrieben wird?

    So etwa:
    PHP-Code:
    $datei file("test.txt");
    while (list(,
    $zeile) = each($datei)) if (!ereg("Nickb",$zeile)) $test .= $zeile;
    echo 
    $test
    Zuletzt geändert von mkJack; 01.05.2002, 21:35.
    Immer erst mal gucken, ob Benzin im Tank ist ...

    Kommentar


    • #3
      Das wär auch ne Lösung danke.

      Aber trotzdem wüsste ich gerne, was an meinem Regulären ausdruck falsch ist bzw. nicht stimmt.

      Kommentar


      • #4
        Ich hab ja keine großartige Ahnung von RegEx' aber probier mal alles in klammern zu setzten und hinten dran ein {1} zu machen.
        "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

        Kommentar


        • #5
          Ich sitze immer noch am gleichen Problem.
          Im Tutorial auf www.php-resource.de habe ich gelesen ,dass die Funktion immer versucht eine möglichst große zeichenkette zu erfassen und das man dies ändern kann. Aber wenn ich es mit folgendem Funktionsaufruf versuche bekomme ich immer eine Fehlermeldung...

          PHP-Code:
          $mitgliederdaten ereg_replace("($member[0])(.*?)(\n)","",$mitgliederdaten); 
          Warning: REG_BADRPT in /servers/lesum-lan/domain/www/_test2_/loeschen2.php on line 15
          preg_replace kann ich nicht benutzen, weil dabei die Modifier nicht erkannt werden...

          Kommentar


          • #6
            $mitgliederdaten = preg_replace(preg_quote($member[0]).'(.*?)\n',"",$mitgliederdaten);
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar


            • #7
              Vielen Dank.

              Hoffe, dass es jetzt endlich funktionieren wird.

              Danke nochmals!

              Kommentar


              • #8
                Ich auch. Leider gibt´s kein ereg_quote, aber ich schätze mal, dass man bei Benutzung von ereg genauso das preg_quote benutzen kann.
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar


                • #9
                  Wenn ich die von dir gepostete Funktion benutze bekomme ich Folgende Fehlermeldung:

                  Warning: Delimiter must not be alphanumeric or backslash
                  Auch wenn ich aus "\n" "\\n" mache mache...
                  Zuletzt geändert von Killerattacks; 05.05.2002, 11:52.

                  Kommentar


                  • #10
                    Da fehlen nur die Delimiter:
                    PHP-Code:
                    $mitgliederdaten preg_replace("/".preg_quote($member[0]).'(.*?)\n/',"",$mitgliederdaten); 
                    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

                    Kommentar


                    • #11
                      THX !

                      Kommentar

                      Lädt...
                      X