I will wish to conjugate function to find the most recent file starting with:
$path = "/home/www/images/xml_cache";
$nom="images_album_6*.xml";
foreach (glob($path.'/'.$nom.'') as $filename) { }
and
$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;
}
}
}
But how?
Thank you in advance
Assuming you have PHP5
, you may use the RecursiveIterator class combined with the getMTime function:
$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);
This will recursively check your specified path and print the full path of the most recent file matching your file name pattern.