Hallo
Ich hätte gern einen Regex gemacht, mit welchem ich eine Gruppe wiederholt ablaufen lasse. Im Beispiel habe ich den String foobarfoobar und ich hätte gerne, dass der Regex möglichst viel von Anfang an nimmt, wenn er das Wort foo oder bar findet. Ich habe dazu folgendes Codestück:
$source = " foobarfoobar;";
if ( preg_match_all('/\s*(foo|bar)+;/si', $source, $matches) > 0 ) {
print_r($matches);
}
Leider gibt mir PHP im Ergebnis einmal ' foobarfoobar;', also den ganzen String und einmal 'bar' aus. Ich möchte aber, dass PHP foobarfoobar ohne die Whitespaces und das Semikolon ausgibt. Mir ist klar, dass man das Beispiel auch mit '/\s*([a-z]+);/si' lösen kann, doch ich brauche genau die Funktionalität, mehrere Stringauswahlen hintereinander beliebig zu wiederholen. Ich hoffe einer von euch kann mir weiterhelfen.
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
hab es selber rausgefunden: eine klammer mehr und gut ist!
$source = " foobarfoobar;";
if ( preg_match_all('/\s*((foo|bar)+);/si', $source, $matches) > 0 ) {
print_r($matches);
}