我需要从名称file_(随机数).css开头的该目录下的文件数量中获取最新的更新文件? 有这样的文件数:
file_12.css
file_34.css
file_14.css
我想获取最近更新的文件。是否有任何现成的函数可用于在PHP中检索此类文件?
答案 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 ]] )
答案 1 :(得分:2)
我想你可以使用filemtime
和readdir
的组合来读取所有文件的名称和最后更新的时间到一个数组中(修改时间作为键,文件名作为值),使用排序功能,然后获取具有最大修改时间的文件。
以下内容应该可以解决问题(未经测试):
<?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);