Cela ressemble à un travail pour glob , qui renvoie un tableau de noms de fichiers correspondant à un modèle spécifié. Je suis au courant de l'autre réponse qui vient d'être publiée, mais proposons une alternative à regex.
D'après le commentaire en haut de la page de documentation, ce que vous pourriez faire ressemble à ceci :
<?php
$dirname = "photos";
$filenames = glob("$dirname/*{380,381,382,383,384,385}*", GLOB_BRACE);
foreach ($filenames as $filename)
{
echo $filename . "<br />";
}
?>
Le GLOB_BRACE
options vous permet de spécifier une liste de valeurs entre accolades, et les astérisques qui les entourent permettent à ces nombres d'apparaître n'importe où dans le nom du fichier. Vous pouvez ensuite parcourir le tableau renvoyé et faire ce que vous voulez avec $filename
.
Vous pouvez utiliser votre exemple for
boucle pour construire automatiquement une chaîne à passer à glob
.
Voici le résultat lorsque j'ai exécuté ceci sur un répertoire de test que j'ai créé :
photos/380.zip
photos/asdf382ghj.txt
photos/385.bmp
Notez qu'un autre fichier que j'y ai mis, a386b.xlsx
, ne correspondait pas au modèle et n'apparaît pas dans la liste.