У меня есть массив путей, состоящий из строк регулярных выражений:
$paths = [
'/cars$',
'.*\/cars$',
'^cars\/.*/',
'/trucks$',
'.*\/trucks$',
];
Я хочу проверить, соответствует ли мой текущий путь чему-либо в этом массиве, например:
if (in_array($current_path, $paths)) {
//Do something
}
Итакнапример, если мой URL-адрес some-site.com/cars
или some-site.com/cars/honda
, я хочу вернуть что-то в операторе if.
Но я не могу понять, как заставить это работать с регулярным выражением.
Я исследовал, используя preg_grep()
, но похоже, что он работает только с одним набором правил регулярных выражений одновременно.
Я могу заставить это работать с preg_match
и строкой, например:
$paths = '/cars$|.*\/cars$|^cars\/.*/|/trucks$|.*\/trucks$';
if (preg_match($paths, $current_path)) {
//Do something
}
Но со временем в этот список будет добавлено много URL-адресов, поэтому я бы предпочел использовать массив.
Кто-нибудь знает, есть ли функция, которая достигает этого?