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

Beitrag lesen

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.