KeF: Regular Expressions ( preg_match_all() )

Halihallo,

ich kapier es einfach nicht.
Wie lautet denn der richtige code bei preg_match_all() das ich dass in das Array haue was zwischen <b> und </b> steht?

preg_match_all('HIER DIE DEFINITION',$users,$zeiten,PREG_PATTERN_ORDER);

Thx im vorraus!

  1. Hi,

    Wie lautet denn der richtige code bei preg_match_all() das ich dass in das Array haue was zwischen <b> und </b> steht?

    was hast Du versucht, welches Ergebnis hast Du erwartet, welches Ergebnis bekamst Du statt dessen?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Servus,

      versucht habe ich:
      preg_match_all('/<b>/(.*?)/</b>/',$users,$zeiten,PREG_PATTERN_ORDER);

      erwartet habe ich ein array, das alles was zwischen tags <b> und </b> steht beinhaltet

      bekommen habe ich:

      Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '(' in /usr/export/www/vhosts/funnetwork/hosting/user/scripts/statistik/statistik.php on line 345

      1. Hi,

        versucht habe ich:
        preg_match_all('/<b>/(.*?)/</b>/',$users,$zeiten,PREG_PATTERN_ORDER);

        das ist schon gar nicht mal schlecht. Allerdings beginnst Du die RegExp mit einem Slash, d.h. der nächste (unmaskierte) Slash beendet sie. Richtig lautet die RegExp also wie?

        Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '('

        Jupp, nach Beendigung der RegExp kommen Modifier wie z.B. 'i' für case-insensitive oder 'g' für global.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          versucht habe ich:
          preg_match_all('/<b>/(.*?)/</b>/',$users,$zeiten,PREG_PATTERN_ORDER);

          das ist schon gar nicht mal schlecht. Allerdings beginnst Du die RegExp mit einem Slash, d.h. der nächste (unmaskierte) Slash beendet sie. Richtig lautet die RegExp also wie?

          Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '('

          Jupp, nach Beendigung der RegExp kommen Modifier wie z.B. 'i' für case-insensitive oder 'g' für global.

          Cheatah

          Ich denke so :D

          preg_match_all('/<b>(.*?)</b>/i',$users,$zeiten,PREG_PATTERN_ORDER);

          Danke!

          1. Jetzt habe ich noch eine Frage hierzu,
            das ist mein Code:

            $handle = opendir($ordner);
            $cc="0";
            $day="2";
            while ($file = readdir ($handle))
                    {
                            if($file != "." && $file != ".." && !ereg('users_',$file))
                                    {
                                            $fd=fopen("logs/".$file,'r');
                                            $users=fgets($fd,filesize($file));
                                            preg_match_all('/<b>(.*?)</b>/i',$users,$zeiten,PREG_PATTERN_ORDER);
                                            fclose($fd);
                                            echo $zeiten[1][7];
                                    }
                    }

            Bei der Zeile "echo $zeiten[1][7];", was muss ich da bei $zeiten hinten drann schreiben da mit er mir jeeeede zeit ausgibt die er gefunden hat?
            Bis jetzt ist meine Ausgabe:

            21:20:17 17:32:40

            Obwohl ich 4 Dateien habe mit jeweils durchschnittlich 5 Zeiten die in <b> und </b> stehen.

            Thx für hilfe!

            1. echo $begrüßung;

              if($file != "." && $file != ".." && !ereg('users_',$file))

              Um das Vorhandensein eines einfachen Strings in einem anderen zu prüfen nimmt man im Allgemeinen eine String-Funktion und wirft nicht dafür die RegExp-Maschinerie an.
              strpos($file, 'users_') !== false

              preg_match_all('/<b>(.*?)</b>/i',$users,$zeiten,PREG_PATTERN_ORDER);
              echo $zeiten[1][7];
              Bei der Zeile "echo $zeiten[1][7];", was muss ich da bei $zeiten hinten drann schreiben da mit er mir jeeeede zeit ausgibt die er gefunden hat?

              $zeiten ist ein Array, das die Fundstellen enthält. Allerdings ist es ein verschachteltes Array.

              Um sich anzuschauen was in einem Array drin ist, kann man es sich mit print_r() ausgeben lassen. Vorher ein <pre> erhöht die Übersichtlichkeit.

              Laufe durch das Array oder einen geeigneten Teil davon und gib die Werte einzeln aus oder implodiere es (oder den Teil) zu einem String.

              echo "$verabschiedung $name";