PHP glob不匹配所有文件

时间:2015-03-11 22:25:10

标签: php glob

我正在试图找出我的硬盘上存在哪些文件以及哪些文件没有。我已经创建了一个适用于大多数文件的脚本,但它说它找不到这个文件,即使它在那里,还有一些其他的不起作用。

我这里有这个文件,我确认存在:1430 - Theta(J)(独立).nds

如果我执行以下操作:

$files = glob("/var/www/html/files/*");

我可以看到我正在寻找的文件,但是当我尝试以下内容时:

$findFile = glob("/var/www/html/files/1430 - Theta (J)(Independent).nds");

它一直没有找到。我有什么需要逃避这个文件吗?

完整代码:

$query = "SELECT r_id, r_url FROM games WHERE r_url <> '' && r_uploaded = '' && r_console = 'nds' ORDER BY RAND() LIMIT 1";
$sql = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($sql)) {


$fileName = substr($row['r_url'], strrpos($row['r_url'], '/') + 1);

$path = "/var/www/html/files";

echo "Full URL = $row[r_url] <br />";
echo "File Name = $fileName <br />";
echo "Full Path = $path/$fileName";
echo "ID = $row[r_id] <br /> <br />";
$findFile = glob("$path/$fileName");


    if(!empty($findFile[0]) && !empty($row['r_id'])) {
        echo "File was found";      
    } else {
        echo "File not found";
    }
}

1 个答案:

答案 0 :(得分:0)

如果您在Linux或Unix上运行,则需要逃避路径。

$findFile = glob("/var/www/html/files/1430\ -\ Theta\ \(J\)\(Independent\).nds");

为了更好地执行此操作,您可以使用escapeshellcmd命令。 http://php.net/manual/en/function.escapeshellcmd.php

$findFile = escapeshellcmd($findFile);