2013-08-05 49 views
1

我會希望結合功能找到最近的文件開始:查找最新的文件開始

$path = "/home/www/images/xml_cache"; 
$nom="images_album_6*.xml"; 

foreach (glob($path.'/'.$nom.'') as $filename) { } 

$latest_ctime = 0; 
    $latest_filename = ''; 
    $d = dir($path); 
    while (false !== ($entry = $d->read())) { 
    $filepath = "{$path}/{$entry}"; 
    // could do also other checks than just checking whether the entry is a file 
    if (is_file($filepath) && filectime($filepath) > $latest_ctime) { 
     $latest_ctime = filectime($filepath); 
     $latest_filename = $entry; 
    } 
    } 
} 

怎麼會呢?

預先感謝您

+0

使用類似於此答案的目錄引用[help with glob pattern](http://stackoverflow.com/a/2084498/342740)它還包含文件時間的元素。 – Prix

回答

1

假設你有PHP5,您可以使用RecursiveIterator類與getMTime功能組合:

$path = "/home/www/images/xml_cache"; 
$pattern = "/^images_album_6\S+.xml/i"; 
$latest_time = 0; 
$latest_filename = ''; 
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::CHILD_FIRST); 
foreach ($iterator as $file) { 
    if ($file->isFile() && preg_match($pattern,$file->getFilename())) { 
     if ($file->getMTime() > $latest_time) { 
      $latest_time = $file->getMTime(); 
      $latest_filename = $file->getPathname(); 
     } 
    } 
} 
print("Latest file: ".$latest_filename.PHP_EOL); 

這將遞歸檢查您指定的路徑和打印的完整路徑最新的文件匹配您的文件名稱模式。

+0

你好, 它的工作原理!我不知道如何感謝你,但我希望爲你提供飲料;-) 非常感謝你 –

+0

@PhilippeLG你可能想採取[Stackoverflow旅遊](http://stackoverflow.com/about)因爲它會指導您如何最好地使用本網站,以便將來可能會有的問題。 – Prix