preg_match_all mag meinen String nicht

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

  • preg_match_all mag meinen String nicht

    Hallo!

    Zunächst will ich beilegen, dass ich nicht viel Erfahrung mit Regulären Ausdrücken habe. Jedoch wie folgt, ich habe den String:

    Code:
    ...
    X-Virus-Scanned: scanned for viruses... should be clean
    ','Ganz viel text
    Aus mehreren
    ZEILEN
    Drei veir
    
    23
    
    '),('2108',,'Return-Path: 
    ...
    Wobei die Zeilenumbrüche jeweils ein \n sind. Ich versuche jetzt, den Text zwischen ',' und ') rauszufiltern, aber eben mit den Zeilenumbrüchen. Ich lese das Manual schon zum zehnten mal, und sonst find ich auch nix was mir weiterhilft.

    Mein Ansatz ist:

    PHP-Code:
    preg_match_all("/clean *\n*(.*\n)*'\)/",$sql,$tempmails); 
    ($sql --> Der String da oben)

    Merkwürdigerweise wird beim ') aber nicht gestoppt, sondern alles bis zum ende des Strings mit gematcht. Jemand ne idee? Was mache ich falsch?

    Danke im Voraus!
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

  • #2
    http://regexp-evaluator.de/evaluator...ce5c/#ergebnis

    Kommentar


    • #3
      Ich blick nicht mehr durch. Selbst wenn ich das komplette php-script von deinem Link in mein Script kopiere.. äh - warte. Nagut dann gehts! Aber sobald ich als Subject den String einsetze den ich als Ursprung habe, wird wieder alles danach mitausgegeben (so wie ich es vorher schon hatte)

      Kanns sein das da was mit den Zeilenumbrüchen nicht stimmt?
      Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

      Kommentar


      • #4
        ja. und es kann auch an der relativen mondfeuchtigkeit liegen sowie an der teilbarkeit des wochentags durch vier.

        Kommentar


        • #5
          Echt?

          Ich wunder mich doch nur, wenn ich den Teilstring benutze den ich hier gepostet hab funktioniert das ganze, wenn ich allerdings den kompletten string gehts aufeinma nichmehr, das muss doch n logischen Grund haben den ich nicht kenne?
          Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

          Kommentar


          • #6
            \n kannst du weglassen, stattdessen modifier "s" benutzen.
            der modifier "s" matcht dann .* auch über zeilenumbrüche hinweg.
            außerdem solltest du noch den modifier "U", wie ungierig benutzen

            dann sollte alles passen

            Kommentar


            • #7
              Hallo 3DMax und danke für deine Antwort.

              Ich bin jetzt momentan bei

              PHP-Code:
              preg_match_all("/clean *(\s)*\'\)/",$sql,$tempmails); 
              Allerdings wird anstatt zuviel, jetzt gar nichts mehr angezeigt? Das mit dem U habe ich nicht verstanden. Gibts den wirklich? Wenn nein verstehe ich den Witz nicht
              Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

              Kommentar


              • #8
                Original geschrieben von ArSeN
                Allerdings wird anstatt zuviel, jetzt gar nichts mehr angezeigt?
                verständlich
                Suchmuster-Modifikatoren da hast du auch noch eine erklärung für U.
                ansonsten gehören modifikatoren an das ende des regex: '/_reg_ex_/modifikatoren'



                Original geschrieben von ArSeN
                Das mit dem U habe ich nicht verstanden. Gibts den wirklich? Wenn nein verstehe ich den Witz nicht
                kein witz:
                8.13. Hilfe, mein Regulärer Ausdruck frißt zuviel!

                Kommentar


                • #9
                  Aaaaaaah!

                  An meiner obigen Interjektion erkennst du wahrscheinlich das es nun Funktioniert. Die Lösung heißt (oder zumindest eine):

                  PHP-Code:
                  preg_match_all("/clean.\',\'(.*)\'\)/sU",$sql,$tempmails); 
                  Ich danke euch recht herzlich!
                  Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                  Kommentar

                  Lädt...
                  X