Spesso abbiamo utilizzato (lo so, l’avete fatto anche voi) la combinazione di opendir(), readdir() e closedir() per elencare i file (e le cartelle) presenti in una determinata directory, utilizzando PHP.
In una versione più elegante di ciò, potremmo utilizzare glob(). glob() restituisce un array contenente i nomi dei file. In questo modo, potremmo lavorare direttamente sull’array, con una facilità estrema. Vediamolo in azione.

Directory di esempio

Nella nostra directory /path/prova abbiamo questi elementi:

prova.txt     Un file
static        Una directory
readme.md     Un file
index.php     Un file
test.php      Che è un link simbolico a index.php

Esempio: troviamo tutti i file con estensione .txt

Per trovare tutte le occorrenze di file che hanno l’estensione .txt, possiamo fare questo:

$files = glob("/path/prova/*.txt");

$files sarà un array con tutti i file corrispondenti:

Array
(
    [0] => /path/prova/prova.txt
)

Nel caso non ce ne fossero, l’array sarà vuoto.

Esempio con estensioni multiple

La funzione glob permette il passaggio di un secondo parametro opzionale. Uno di questi è GLOB_BRACE che ci permette di utilizzare le parentesi per indicare una selezione multipla. Nel nostro esempio utilizzeremo {jpg, gif, png} per cercare i file con queste estensioni.

$files = glob("/path/prova/*.{jpg,gif,png}", GLOB_BRACE);

Nel caso avessimo avuto dei file con una di queste estensioni, il risultato di $files sarebbe così:

Array
(
     [0] => /path/prova/1.jpg
     [1] => /path/prova/2.gif
     [2] => /path/prova/3.png
)