2011-10-07 99 views
2

我需要從該目錄下的文件數量下載最新的更新文件,並以名稱file_(隨機數).css開頭? 不存在的文件的數量是這樣的:在PHP中獲取最近更新的文件

file_12.css 
file_34.css 
file_14.css 

我想最近更新的文件。是否有任何現成的函數可用於檢索PHP中的這種文件?

+4

是,http://php.net/filemtime –

回答

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); 
+0

這導致我在正確的方向上,只有我的問題當使用'filemtime()'時,你需要使用整個路徑'filemtime('/ path/to/files /'。文件)'而不僅僅是本地文件名。 –

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);