PHP函数in_array
是否接受REGEXP数组作为第二个参数?
我在PHP.net
这是我当前正在使用的代码:
$haystack = [
"/^foo$/",
"/^bar$/",
"/^foobar$/"
];
function in_reg_array($needle, $haystack) {
foreach ($haystack as $straw)
if (preg_match($straw, $needle))
return TRUE;
return FALSE;
}
如果有人有更好的解决方案,我欢迎您提出建议。
我不能对foo|bar|foobar
使用单个正则表达式,因为干草堆各不相同。
答案 0 :(得分:1)
preg_filter()
接受一组模式,替换它们,然后返回替换后的字符串。因此,如果它什么都不返回,则说明没有匹配项。
function in_reg_array($needle, $haystack) {
return preg_filter($haystack, '', $needle) !== null;
}
答案 1 :(得分:1)
另一个选择:
$haystack = [
"^foo$",
"^bar$",
"^foobar$"
];
$string = ['foo', 'bar','baz', 'foo2'];
$result = preg_grep("/(".implode('|',$haystack).")/", $string);
输出:
array(2) {
[0]=> string(3) "foo"
[1]=> string(3) "bar"
}