将字符串与带通配符的数组匹配

时间:2015-12-16 14:34:28

标签: php arrays

如果找到几个问题来解决匹配的字符串,可能包含通配符,则针对数组。或换句话说,替换支持通配符的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通配符时。不确定我做错了什么,也许有人有更好/更可靠的功能?

0 个答案:

没有答案