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 )