使用php查找并使用随机/未知名称打开文件

时间:2013-11-15 12:22:03

标签: php fopen glob opendir

我在Google周围搜索了一种方法,以便在具有特定扩展名的特定文件夹中读取具有未知/随机名称的文件(它将是该文件夹中的唯一文件,但它每小时更新一次一个新的名字),但找不到任何东西。以前该文件每次都有相同的名称,但现在它改变了......

以前我只能这样定义:

$file = "/var/uploads/quarter.csv";
$handle = @fopen($file, "r"); 

但随机名称不再有效。

所以,我试过了:

function the_file($dir = '/var/uploads/') {
    $files = glob($dir . '/*.csv');
    $file = $files;
}

$handle = @fopen($file, "r");

脚本继续......

但它不起作用。任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:3)

$file变量在函数范围之外不存在,因此您将无法在函数外部使用它。此外,glob()返回一个数组 - 如果只有一个文件,你可以获取数组的第一个元素并返回它,如下所示:

function the_file($dir = '/var/uploads/') {
    $files = glob($dir . '/*.csv');
    return $files[0]; // return the first filename
}

现在将它存储在一个变量中,你可以这样做:

$file = the_file(); // or specify a directory
# code ...

答案 1 :(得分:0)

可能的解决方案是:

如果目录中只有一个文件,您可以执行scandir来获取该文件夹的内容。 (见PHP ref。)

$dir    = 'your_folder_name';
$files1 = scandir($dir);

$files的内容将是:

Array
(
    [0] => .
    [1] => ..
    [2] => yourfile.csv
)

因此,您可以使用以下命令获取文件的全名:

$filename = $files1[2];