Каков наилучший способ проверить строку в массиве шаблонов регулярных выражений?
Это что-то вроде preg_grep?
Мне нужен результат, как это:
$string = 'myFooString';
$patterns = [
'some(regex|foo)',
'my.+String',
'anotherRegex'
];
$isMatchWithAny = false;
foreach ($patterns as $pattern) {
if (preg_match('/' . $pattern . '/', $string)){
$isMatchWithAny = true;
break;
}
}
к несчастью preg_grep
обеспечивает противоположность того, что вы просите, один шаблон, но массив входных данных: http://php.net/manual/en/function.preg-grep.php
В этом случае ваш пример кода обеспечивает самый простой результат того, что вы говорите, что вы пытаетесь достичь:
$string = 'myFooString';
$patterns = [
'some(regex|foo)',
'my.+String',
'anotherRegex'
];
$isMatchWithAny = false;
foreach ($patterns as $pattern) {
if (preg_match('/' . $pattern . '/', $string)){
$isMatchWithAny = true;
break;
}
}
var_dump($isMatchWithAny);
Единственным другим способом было бы, если бы вы написали более сложный шаблон, охватывающий все различные шаблоны, которые вы ищете, но это будет зависеть от вашего приложения и варианта использования.
Других решений пока нет …