Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Regex in PHP

chrholder / 1 Antworten / Flachansicht Nickles

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.

bei Antwort benachrichtigen
chrholder Nachtrag zu: „Regex in PHP“
Optionen

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);
}

bei Antwort benachrichtigen