如何在PHP中获取区分大小写的文件名?

时间:2014-02-27 23:16:35

标签: php file include file-exists

我创建了一个从文件夹调用文件的函数。但问题是它不匹配案例。我的功能是

function CheckFile($var){
    if($var){
        $file = $_SERVER['DOCUMENT_ROOT'].'/include_folder/'.$var.'.php';
        if (file_exists($file)) {
        return true;
        } 
    } 
}

因此,如果文件存在,我将其包含在内。就像$ var = profile一样,它会检查profile.php的核心文件夹,如果它存在,那么它将包含它。我在调用此函数时包含文件。但问题是它不区分大小写。就像我寻找“PrOFile”然后它将包括profile.php所以如何解决这个问题?如果有人可以,请帮助我。

2 个答案:

答案 0 :(得分:0)

在Windows上,文件名不区分大小写。这就是他们的工作方式。

所以你需要手动编写代码:

if( file_exists($file) && glob($file)[0] === $file) // assumes PHP 5.4
             // older versions need a temporary variable for glob

答案 1 :(得分:0)

使用 realpath() 并根据需要转换斜线。

示例:

// Check the filename is the same (don't worry on the path)
if (file_exists($filepath) && basename(realpath($filepath)) === basename($filepath)) {

// Check the full path, converting slashes to be sure
// Assumes final path is Lunix orientated
if (file_exists($filepath) && str_replace('\\', '/', realpath($filepath)) === $filepath) {

// Check the full path, converting slashes to be sure
// Assumes final path may not be Lunix orientated
if (file_exists($filepath) && str_replace('\\', '/', realpath($filepath)) === str_replace('\\', '/', $filepath)) {