Получить оба поля из URL и преобразовать их в переменные для запроса поиска - PullRequest
2 голосов
/ 13 июня 2019

Я пытаюсь получить оба поля в точке API, чтобы они запрашивали на основе этого.пример.

api/evenSession/123123123/eventSession?token=1234656&filter= chris moreno

мой контроллер выполняет поиск по имени или фамилии.Но я хочу создать конечную точку, которая ставит в очередь базу данных, если она передана в "chris moreno"

, это мой $ filter code

if(preg_match_all('/^[A-Z]*[a-z]*(-|\s)[A-Z]*[a-z]*$/', $filter)){
       $searchFields = [
           'a.lastName',
           'a.firstName'
       ];

id, чтобы иметь возможность перехватывать оба поля(Крис и Морено) в моем сборщике, чтобы я мог передать это на мой запрос, чтобы он мог проверить людей, зарегистрированных с именем и фамилией.(сузить поиск)

1 Ответ

1 голос
/ 13 июня 2019

Здесь у нас будет три группы захвата, если наши входные данные соответствуют перечисленным, например, выражение, с которого мы начнем:

token=(.*?)&filter=\s*([\w]+)\s+([\w]+)

Демо 1

Здесь мы указываем значение нашего токена в этой группе захвата:

(.*?)

и наши имена в этих двух отдельных группах захвата:

([\w]+)

которые две последние группы можно изменить, если у нас есть такие имена, как О'Нил, которые могут не попасть в класс [A-Za-z] char. Например, мы можем разрешить любые символы:

token=(.*?)&filter=\s*(.+?)\s+(.+) 

Демо 2

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

Демо 3

...