preg_match_all =[a-z]{5,}=i

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

  • preg_match_all =[a-z]{5,}=i

    Da fehlt was!

  • #2
    Ja...
    nur wieso?^^

    Kommentar


    • #3
      Original geschrieben von TobiaZ
      Da fehlt was!
      Wenn du den REGEX etwas anpasst, dann siehst du, was hier fehlt:
      PHP-Code:
      $txt "Natürlich, aber weshalb ist alles nicht da?";
      preg_match('=\\s([a-z]{5})\\s=i'$txt$found);
      echo 
      "$found[1]<br />"
      Gruss
      H2O

      Kommentar


      • #4
        entschuldigung;o)

        ja es fehlte was, da heute im büro mein internet nciht mehr wollte..
        so bin ich nur bis zur Überschrift gekommen.

        leider hab ich den vollständigen Code nicht hier, aber mein Anliegen wasr folgendes.

        Wie bekomme ich das letzte vorkommen einen bestimmten strings, also sprich einer bestimmten länge heraus?

        PHP-Code:
        $txt "testeintrag von amind, sowie ein eintrag von kuchb und dann nochmal ein bischen bla bla...";
        preg_match('=\s([a-z]{5})\s=i'$txt$found);
        echo 
        "$found[1]<br />"
        Ich nehme einfach mal dieses Beispiel;o)

        SO nun brauche ich das letzte vorkommen von dem "kürzel" z.B. kuchb.

        Ich weis natürlich vorher nicht welches kürzel es ist, dass kann varieren.

        Ist ungefähr verständlich, was ich brauche? ;o)


        Danke
        Zuletzt geändert von petro_0; 02.07.2008, 20:23.
        gruss pedro

        Kommentar


        • #5
          preg_match

          ich hab mal bischen gebastelt.

          ich finde folgende Lösung pasabel.

          PHP-Code:
          $txt "testeintrag von amind, sowie ein eintrag von kuchb und dann nochmal ein bischen bla bla...";
          preg_match('=\svon?\s([a-z]{5})\sund?\s=i'$txt$found);
          print_r($found); 
          Was aber wenn es zu mehr kann aber muss nicht kommt und die positionen variieren?

          Also geht folgendes irgendwie?

          PHP-Code:
          preg_match('=\svon?|mit?\s([a-z]{5})\sund?|ohne?\s=i'$txt$found); 
          Update!

          So hier mein richtige Code, leide rfunzt der nicht wie bei dem Beispiel oben.
          Wer kann mir helfen?

          PHP-Code:

          $lognotes
          "*** CANDY Initial Case Notes 30.05.2008 14:53:01TESTTICKET FÜR
           CANDY N: Further investigation C: xxxx *** CANDY LOG 30.05.2008 15:11:01 by 
          user \"amind\": Change Severity to C/D-Kunde; Anz. Kundenbeschw. to 1; CANDY 
          URL; [schruefg]sa ende gesetzt *** CANDY LOG 30.05.2008 15:11:01 by user 
          \"CANDY\": Change Severity to C/D-Kunde; Anz. Kundenbeschw. to 1; CANDY 
          URL; [schruefg]sa ende gesetzt *** CANDY LOG 30.05.2008 15:11:01 by user 
          \"CANDY\": Change Severity to C/D-Kunde; Anz. Kundenbeschw. to 1; CANDY 
          URL; [schruefg]sa ende gesetzt *** NOTES 30.05.2008 15:30:18 schruefg Action
           Type: Operator Wiedervorlage-Datum:31.05.2008 05:00:00 testicket *** STATUS
           CHANGE 30.05.2008 15:30:18 by user \"schruefg\" from status \"Offen\" to status
           \"Wartend\" Grund: Wiedervorlage [schruefg]test04.06.2008 09:23:01 by user 
          \"CANDY\": Change Severity to C/D-Kunde; Anz. Kundenbeschw. to 1; CANDY 
          URL; *** NOTES 02.07.2008 10:00:11 CANDY Action Type: Operator Bitte um ein 
          Update des aktuellen Bearbeitungsstandes. *** NOTES 02.07.2008 11:31:12 kuchb
           Action Type: Operator Bitte um ein Update des aktuellen Bearbeitungsstandes."
          ;


          preg_match('=\s(user?)\s([a-z]{5,9})\s(Action?)\s(from?)\s=i'$lognotes$shortys);
              
          print_r($shortys); 
          Zuletzt geändert von petro_0; 03.07.2008, 07:29.
          gruss pedro

          Kommentar


          • #6
            und weiter gehts...

            So hab noch bissi bastelt,

            nun bekomme ich wenigstens mal ne Ausgabe.

            PHP-Code:
            preg_match_all('=\s(by user)?\s(\")?([a-z]{5,9})(\")?\s(Action|from)?\s=i'$lognotes$shortys); 
            Ausgabe:
            Array ( [0] => Array ( [0] => by user "schruefg" from ) [1] => Array ( [0] => by user ) [2]
            => Array ( [0] => " ) [3] => Array ( [0] => schruefg ) [4] => Array ( [0] => " ) [5] => Array ( [0] => from ) )

            Aber das ist noch nicht das letzte vorkommen des Strings {5,9} stellig.

            Der letzte sollte nach meinem Beispiel kuchb sein ;o(
            gruss pedro

            Kommentar


            • #7
              gelöst!

              Hy,

              da ich mir selber helfen konnte.

              Hier meine Lösung.

              PHP-Code:
              //Such die Fälle durch die vorkommen können um das aktuelle Kürzel zu bekommen.
                          
              preg_match_all('=[0-9]{2}.[0-9]{2}.[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2}\sby user "(.[^"]*)=i', $
              lognotes$shortys1PREG_OFFSET_CAPTURE);
                          
              preg_match_all('=\*\*\*\sNOTES\s[0-9]{2}.[0-9]{2}.[0-9]{4} [0-9]{2}:[0-9]{2}:[0-9]{2}\s([^b^\s][^y^\s][^\s]*)[\s]=i'
              $lognotes$shortys2PREG_OFFSET_CAPTURE);
                          
                          
              //Array verbinden, damit nach dem letzten Kürzel, gesucht werden kann.
                          
              $arr array_merge($shortys1[1], $shortys2[1]);
                          
              //Ist das grösste Kürzel in $shortys1 oder in $shortys2
                          
              if($shortys1[1][count($shortys1[1])-1][1]>$shortys2[1][count($shortys2[1])-1][1]) {
                              
              //Ist das grösste hier?
                              
              $kuerzel=$shortys1[1][count($shortys1[1])-1][0];
                          } else {
                              
              //oder ist es hier?
                              
              $kuerzel=$shortys2[1][count($shortys2[1])-1][0];
                          } 
              gruss pedro

              Kommentar

              Lädt...
              X