Здесь у нас будет три группы захвата, если наши входные данные соответствуют перечисленным, например, выражение, с которого мы начнем:
token=(.*?)&filter=\s*([\w]+)\s+([\w]+)
Здесь мы указываем значение нашего токена в этой группе захвата:
(.*?)
и наши имена в этих двух отдельных группах захвата:
([\w]+)
которые две последние группы можно изменить, если у нас есть такие имена, как О'Нил, которые могут не попасть в класс [A-Za-z]
char. Например, мы можем разрешить любые символы:
token=(.*?)&filter=\s*(.+?)\s+(.+)
Test
$re = '/token=(.*?)&filter=\s*([\w]+)\s+([\w]+)/m';
$str = 'api/evenSession/123123123/eventSession?token=1234656&filter= chris moreno
api/evenSession/123123123/eventSession?token=1234656&filter= alice bob
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$searchFields = [];
foreach ($matches as $key => $value) {
$searchFields[$key] = [$value[2], $value[3]];
}
var_dump($searchFields);