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.