frankx: "AB-1234" als reg Expr in PHP-string und auslesen

Hallo,

in einem PHP String möchte ich suchen, ob die Folge AB-1234 vorkommt, und wenn ja, auslesen. Dabei sind "AB-" fix, also genau so, und 1234 als Platzhalter für irgendeine-4stellige-Ziffernfolge.

Ich weiß leider nur, dass es geht, aber mit regulären Ausdrücken fehlt mir schon gleich der Ansatz.

Ich möchte also machen: Suche, ob in diesem String irgendwo "AB-" vorkommt (oder "AB-4malZiffer"), und wenn ja, gib mir bitte diesen Teilstring zurück. Kann mir jemand auf die Sprünge helfen?

Dank Frankx

  1. Lieber frankx,

    Dabei sind "AB-" fix, also genau so, und 1234 als Platzhalter für irgendeine-4stellige-Ziffernfolge.

    Hmm, ich habe das jetzt nicht getestet:

    $regExp = "/AB-(\d{4})/";  
    $match = preg_match_all($regExp, $meinString, $trefferArray);  
    print_r($treffer);
    

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hallo,

      [code lang=php]$regExp = "/AB-(\d{4})/";

      Wo werden denn die kryptischen Codes von preg_* erklärt?

      bydey

      --
      -- noch immer ein erfolgloser <DIV> Jünger --
      1. Hallo,

        z.b. http://de.selfhtml.org/perl/sprache/regexpr.htm

        gruss

        --
        no strict;
        no warnings;
        Terrorific!
        Given a cow full of milk, should the milk un-cow itself, or should the cow milk itself?
        1. Hallo,

          z.b. http://de.selfhtml.org/perl/sprache/regexpr.htm

          Danke! Auf den Zusammenhang mit Perl wäre ich nicht gekommen.

          bydey

          --
          -- noch immer ein erfolgloser <DIV> Jünger --
          1. Liebe(r) dey,

            Auf den Zusammenhang mit Perl wäre ich nicht gekommen.

            das "preg_" in diesen speziellen Funktionen in PHP kommt von "PEARL-compatible regular expressions". Die dafür notwendige Komponente, die in PHP integriert sein muss ist dann auch die PCRE Bibliothek (rate mal, was die Abkürzung bedeutet *g*).

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

            1. Hallo Felix.

              das "preg_" in diesen speziellen Funktionen in PHP kommt von "PEARL-compatible regular expressions".

              Pearl?

              Einen schönen Dienstag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              mathbr:del.icio.us/ mathbr:w00t/
              1. Lieber Ashura,

                Pearl?

                magst Du keine Perlen? *g*

                Aber Du hast recht. Da ist mir ein a zuviel aus den Tasten gesprungen.

                Liebe Grüße aus Ellwangen,

                Felix Riesterer.

          2. Hallo,

            http://de.php.net/manual/en/ref.pcre.php und http://www.google.de/search?q=define%3Apcre

            gruss

            --
            no strict;
            no warnings;
            Terrorific!
            Given a cow full of milk, should the milk un-cow itself, or should the cow milk itself?
      2. Hallo dey.

        [code lang=php]$regExp = "/AB-(\d{4})/";

        Wo werden denn die kryptischen Codes von preg_* erklärt?

        Auch eine sehr hilfreiche Seite mit Erklärungen und sogar einem Tool zum sofortigen Ausprobieren der regulären Ausdrücke: http://pcre.nophia.de

        Einen schönen Dienstag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/
    2. Hallo Felix,

      besten Dank für die frühe Antwort! Hab schon gesehen, dass Du seit 5 an der Schulhomepage bastelst.

      Bei Deinem Vorschlag soweit alles Prima. Allerdings gibt er mir 2 Wert aus:

      $meinString = "öalskdjföalskdjföasldkfj AB-3456 ölkjölkjölkjkl asdfasdfasdfasdf ölkjölkjölkj";

      print_r($trefferArray);

      Array
      (
          [0] => Array
              (
                  [0] => AB-3456
              )

      [1] => Array
              (
                  [0] => 3456
              )
      )

      Steckt in der der $regExp = "/AB-(\d{4})/"; was drin, dass beide Möglichkeiten, also mit AB- und ohne AB- matched. Es sind für mich bisher mehr oder weniger nur Hyroglyphen (oder Hüroglüfen in Neudeutsch vermutlich).

      Dank Frnakx

      1. Lieber frankx,

        Steckt in der der $regExp = "/AB-(\d{4})/"; was drin, dass beide Möglichkeiten, also mit AB- und ohne AB- matched. Es sind für mich bisher mehr oder weniger nur Hyroglyphen (oder Hüroglüfen in Neudeutsch vermutlich).

        die PHP Doku sagt zu der Funktion preg_match_all unter anderem:

        int preg_match_all ( string Suchmuster, string Zeichenkette, array &Treffer [, int Flags [, int Versatz]] )

        Falls kein Flag für die Anordnung angegeben wurde, wird PREG_PATTERN_ORDER angenommen.

        PREG_PATTERN_ORDER

        Ordnet die Ergebnisse so an, dass $treffer[0] ein Array von Übereinstimmungen mit dem kompletten Suchmuster ist, $treffer[1] ein Array von Zeichenketten, die mit dem ersten eingeklammerten Teil-Suchmuster übereinstimmen und so weiter.

        Dadurch sollte klar werden, dass das Array $trefferArray[1] deinem geklammerten Teil des Suchmusters entspricht. Wenn Du mehrere solche Treffer mit vier Ziffern hast, dann hat dieses Array eben soviele Elemente, wie geklammerte Suchmusterteile gefunden wurden.

        $meinString = "öalskdkfj AB-3456 ölkjölkAB-0007jölkAB-jkl ab-4329sdfasdfasdAB-87654jölkj";
        sollte dann folgendes Treffer-Array auswerfen:

        Array
        (
            [0] => Array
                (
                    [0] => AB-3456
                    [1] => AB-0007
                    [2] => AB-8765
                )

        [1] => Array
                (
                    [0] => 3456
                    [1] => 0007
                    [2] => 8765
                )
        )

        trefferArray[0] enthält alle Treffer, die auf das komplette Suchmuster matchen ("AB-3456", "AB-0007", "AB-8765"),
        trefferArray[1] enthält alle Treffer, die auf den ersten geklammerten Teil deines Suchmusters matchen ("3456", "0007", "8765"),
        trefferArray[2] gibt es nicht, da du keinen zweiten geklammerten Teil in deinem Suchmuster hast.

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hallo Felix,

          supi danke, im Laufe der Monate dann gern mal Erfahrungsaustausch wegen HTML-AG und Schülerhomepage.

          Gruß, Robert aka Frankx

          1. Lieber frankx,

            supi danke, im Laufe der Monate dann gern mal Erfahrungsaustausch wegen HTML-AG und Schülerhomepage.

            HA! Seit letzter Sitzung beschäftigen wir uns nun schon mit CSS! Allererste Schrittchen zum Verständnis haben wir schon unternommen, wenngleich auch der Unterschied zwischen einem Block-Element und einem Inline-Element noch nicht besprochen wurde.

            Hier wird sich bald etwas tun... :-)

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

            1. Hallo Felix,

              sehr schön. Wie bekommt mensch eigenltlich den Punkt innerhalb des Domainnamens, also das "homepages.undsoweieter". Ist das eine Subdomain von reutlinger-gymnasium.de und ist das ein providerservice. Ich hatte früher mal von @Domains bei Strato gehört, aber das ist ja was anderes...;

              Gruß Frankx

              Ps. wir sind noch nicht veröffentlichungsreif, geht aber auch in die Richtung. Werde den direkten Link zu euren Hompages mal einbauen bei unserer provisorischen Schülerseite.

              1. Lieber farnkx,

                Wie bekommt mensch eigenltlich den Punkt innerhalb des Domainnamens, also das "homepages.undsoweieter". Ist das eine Subdomain von reutlinger-gymnasium.de und ist das ein providerservice. Ich hatte früher mal von @Domains bei Strato gehört, aber das ist ja was anderes...;

                "homepages" ist eine Subdomain von "peutinger-gymnasium.de" (und nicht von _r_eutlinger-gymnasium.de *g*). Diese Einstellung konnte ich im Administrationstool unseres Providers selbst vornehmen. Unser Tarif ermöglicht eine ganze Menge solcher Subdomains.

                Eine Subdomain ist lediglich eine neue Einstellung, die es ermöglicht einen Ordner Deiner Webpräsenz zu einem virtuellen DocumentRoot (für eben diese Subdomain) zu machen. Teste mal http://forum.peutinger-gymnasium.de/ im Vergleich zu http://www.peutinger-gymnasium.de/html/subdomains/forum/!

                Liebe Grüße aus Ellwangen,

                Felix Riesterer.