[RESOLU] Php Trouver le fichier le plus récent commençant par

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Php Trouver le fichier le plus récent commençant par

Re: Php Trouver le fichier le plus récent commençant par

par Phil56Bretagne » 05 août 2013, 13:23

La solution m'a été donnée sur un autre forum http://stackoverflow.com
$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);
Merci à la communauté

Re: Php Trouver le fichier le plus récent commençant par

par xTG » 05 août 2013, 12:58

Un petit indice pour pouvoir lier les deux scripts, la relation suivante est ce qui te manque dans la compréhension des codes :

Code : Tout sélectionner

$filepath = $path . '/' . $filename

Php Trouver le fichier le plus récent commençant par

par Phil56Bretagne » 05 août 2013, 12:26

Bonjour,

Après une longue recherche je peine à lier deux fonctions (qui fonctionnent bien prises séparément) afin de trouver le fichier le plus récent d'un dossier et commençant par :

1 recherche sur une partie du nom
$path = "/home/www/images/xml_cache"; 
$nom="images_album_6*.xml";

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

2 recherche du fichier le plus récent :

$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;
	
	
  }
}
  }
Merci pour votre aide

Philippe