Je te livre brut un code que j'ai écrit il y a quelques jours pour renvoyer une liste de fichiers dans un répertoire avec 2 critères sur le nom.
Il suffit par exemple de faire ce que tu veux au point (X) à la place du array_push, en agissant sur $chemin ou $fichier, et de l'appeler avec le nom de ton fichier en paramètre ("annonce_") dans $commence_par :
- Code: Tout sélectionner
function liste_rep($repertoire='.',$commence_par='', $contient='') {
$tab_fichiers = array();
if ( is_dir($repertoire) ) {
$fh = opendir($repertoire);
while (($fichier = readdir($fh)) !== false) {
// parcours les fichiers, ignore . et .., recursif si necessaire
if (strcmp($fichier, '.')==0 || strcmp($fichier, '..')==0) continue;
$chemin = $repertoire . '/' . $fichier;
if ( is_dir($chemin) ) // repertoire : on reboucle en recursif
$tab_fichiers = array_merge($tab_fichiers, $this->liste_rep($chemin, $commence_par, $contient));
else { // fichier : on traite
if (strcmp($commence_par, '')!=0) // respect du critère commence_par
if ( strncasecmp($fichier, $commence_par, strlen($commence_par)) !=0 ) continue;
if (strcmp($contient, '')!=0) // respect du critère contient
if (stripos($fichier, $contient)===FALSE ) continue;
array_push($tab_fichiers, $chemin); /// (X)
}
}
closedir($fh);
} else {
// faux, fonction appelee avec un fichier non repertoire
$tab_fichiers = false;
}
return $tab_fichiers;
}
Code inspiré lui-même de la doc et des exemples sur php.net