Isso parece um trabalho para glob , que retorna uma matriz de nomes de arquivo que correspondem a um padrão especificado. Estou ciente da outra resposta postada, mas vamos fornecer uma alternativa ao regex.
De acordo com o comentário principal na página de documentos, o que você poderia fazer é algo assim:
<?php
$dirname = "photos";
$filenames = glob("$dirname/*{380,381,382,383,384,385}*", GLOB_BRACE);
foreach ($filenames as $filename)
{
echo $filename . "<br />";
}
?>
O
GLOB_BRACE
options permite especificar uma lista de valores entre chaves, e os asteriscos ao redor deles permitem que esses números apareçam em qualquer lugar no nome do arquivo. Você pode então iterar sobre o array retornado e fazer o que quiser com $filename
. Você pode usar seu exemplo
for
loop para construir automaticamente uma string para passar para glob
. Aqui está a saída quando eu executei isso em um diretório de teste que fiz:
photos/380.zip
photos/asdf382ghj.txt
photos/385.bmp
Observe que outro arquivo que coloquei lá,
a386b.xlsx
, não correspondeu ao padrão e não aparece na lista.