Esto parece un trabajo para glob , que devuelve una matriz de nombres de archivo que coinciden con un patrón específico. Soy consciente de la otra respuesta que acabo de publicar, pero proporcionemos una alternativa a la expresión regular.
De acuerdo con el comentario principal en la página de documentos, lo que podría hacer es algo como esto:
<?php
$dirname = "photos";
$filenames = glob("$dirname/*{380,381,382,383,384,385}*", GLOB_BRACE);
foreach ($filenames as $filename)
{
echo $filename . "<br />";
}
?>
El GLOB_BRACE
Las opciones le permiten especificar una lista de valores entre llaves, y los asteriscos que los rodean permiten que esos números aparezcan en cualquier parte del nombre del archivo. Luego puede iterar sobre la matriz devuelta y hacer lo que quiera con $filename
.
Podrías usar tu ejemplo for
loop para construir automáticamente una cadena para pasar a glob
.
Aquí está el resultado cuando ejecuté esto en un directorio de prueba que hice:
photos/380.zip
photos/asdf382ghj.txt
photos/385.bmp
Tenga en cuenta que otro archivo que puse allí, a386b.xlsx
, no coincide con el patrón y no aparece en la lista.