Sembra un lavoro per glob , che restituisce una matrice di nomi di file che corrispondono a un modello specificato. Sono a conoscenza dell'altra risposta appena pubblicata, ma forniamo un'alternativa alla regex.
Secondo il commento in alto nella pagina dei documenti, quello che potresti fare è qualcosa del genere:
<?php
$dirname = "photos";
$filenames = glob("$dirname/*{380,381,382,383,384,385}*", GLOB_BRACE);
foreach ($filenames as $filename)
{
echo $filename . "<br />";
}
?>
Il GLOB_BRACE
opzioni ti consente di specificare un elenco di valori tra parentesi graffe e gli asterischi intorno ad essi consentono a quei numeri di apparire ovunque nel nome del file. Puoi quindi scorrere l'array restituito e fare quello che vuoi con $filename
.
Potresti usare il tuo esempio for
loop per creare automaticamente una stringa da passare a glob
.
Ecco l'output quando l'ho eseguito su una directory di test che ho creato:
photos/380.zip
photos/asdf382ghj.txt
photos/385.bmp
Nota che ho inserito un altro file, a386b.xlsx
, non corrisponde al modello e non appare nell'elenco.