一尘不染

PHP大小写不敏感的file_exists()版本

php

我正在尝试考虑在PHP中实现不区分大小写的file_exists函数的最快方法。我最好的选择是枚举目录中的文件,并进行strtolower()与strtolower()的比较直到找到匹配项?


阅读 798

收藏
2020-05-29

共1个答案

一尘不染

我使用注释中的源代码来创建此功能。返回完整路径文件(如果找到),否则返回FALSE。

在文件名中的目录名称上不区分大小写。

function fileExists($fileName, $caseSensitive = true) {

    if(file_exists($fileName)) {
        return $fileName;
    }
    if($caseSensitive) return false;

    // Handle case insensitive requests            
    $directoryName = dirname($fileName);
    $fileArray = glob($directoryName . '/*', GLOB_NOSORT);
    $fileNameLowerCase = strtolower($fileName);
    foreach($fileArray as $file) {
        if(strtolower($file) == $fileNameLowerCase) {
            return $file;
        }
    }
    return false;
}
2020-05-29