如果找到几个问题来解决匹配的字符串,可能包含通配符,则针对数组。或换句话说,替换支持通配符的in_array
。
我正在寻找的是相反的,将文件名与可能包含通配符的数组相匹配。目前,我正在使用此代码:
function in_array_wc($string, $filters) {
foreach ($filters as $filter) {
// Regex ain't cheap, do we need it?
if (strpos($filter, "*") !== false) {
$filter = str_replace( '\*', '.*?', preg_quote( $filter, '/' ) );
preg_match( '/^' . $filter . '$/i', $string, $result );
if ($result[0] !== null) {
return true;
}
} else { // no wildcards
if (in_array($string, $filters)) {
return true;
}
}
return false;
}
}
$ignore_list = array('robots.txt', '*.png', 'something-*-else.*');
$file = "test.png";
if (in_array_wc($file, $ignore_list)) {
// do stuff
}
问题是,匹配有点不可靠,尤其是涉及o通配符时。不确定我做错了什么,也许有人有更好/更可靠的功能?