使用PHP获取最近更新的文件

时间:2011-10-07 16:07:11

标签: php

我需要从名称file_(随机数).css开头的该目录下的文件数量中获取最新的更新文件? 有这样的文件数:

file_12.css
file_34.css
file_14.css

我想获取最近更新的文件。是否有任何现成的函数可用于在PHP中检索此类文件?

3 个答案:

答案 0 :(得分:6)

是的,有:

int filemtime ( string $filename )

信息:http://php.net/manual/en/function.filemtime.php

string readdir ([ resource $dir_handle ] )

信息:http://php.net/manual/en/function.readdir.php

array scandir ( string $directory [, int $sorting_order = SCANDIR_SORT_ASCENDING [, resource $context ]] )

信息:http://www.php.net/manual/en/function.scandir.php

答案 1 :(得分:2)

我想你可以使用filemtimereaddir的组合来读取所有文件的名称和最后更新的时间到一个数组中(修改时间作为键,文件名作为值),使用排序功能,然后获取具有最大修改时间的文件。

以下内容应该可以解决问题(未经测试):

<?php

$files = array();

if ($handle = opendir('/path/to/files')) {
    while (false !== ($file = readdir($handle))) {
        if (is_file($file)) {
            $modified = filemtime($file);
            $files[$modified] = $file;
        }
    }
    closedir($handle);
}

krsort($files);

$last_modified_file = array_shift($files);

答案 2 :(得分:1)

function cmp($a, $b)
{
if(!is_file($b) || !strpos('file_', $b)) return -1;
$a = filemtime($a); 
$b = filemtime($b);   
return  ($a == $b) ? 0 :( ($a > $b) ? -1 : 1 );
}
usort($handle = scandir('/path/to/files'), "cmp");
$file = $handle[0];
unset($handle);