我需要從該目錄下的文件數量下載最新的更新文件,並以名稱file_(隨機數).css開頭? 不存在的文件的數量是這樣的:在PHP中獲取最近更新的文件
file_12.css
file_34.css
file_14.css
我想最近更新的文件。是否有任何現成的函數可用於檢索PHP中的這種文件?
我需要從該目錄下的文件數量下載最新的更新文件,並以名稱file_(隨機數).css開頭? 不存在的文件的數量是這樣的:在PHP中獲取最近更新的文件
file_12.css
file_34.css
file_14.css
我想最近更新的文件。是否有任何現成的函數可用於檢索PHP中的這種文件?
是的,有:
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 ]])
我想你可以使用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);
這導致我在正確的方向上,只有我的問題當使用'filemtime()'時,你需要使用整個路徑'filemtime('/ path/to/files /'。文件)'而不僅僅是本地文件名。 –
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);
是,http://php.net/filemtime –