devdev / in the loop

Usare glob() in PHP per elencare i file di una directory

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
)
Questo articolo ti è stato utile?
PHP – LETTURA 6 MINUTI PHP 8: l’operatore null-safe
L’introduzione dell’operatore null coalescing con PHP 7 è stato un buon passo avanti per la pulizia del codice, ma non…
Laravel – LETTURA 4 MINUTI Aggiungere phpMyAdmin a Laravel Sail
Anche se a questo punto lo sapete già, è giusto dire che phpMyAdmin è sicuramente il tool dbms open  source…
PHP – LETTURA 5 MINUTI Installare PHP su macOS Monterey con homebrew (anche su M1)
L’ultima versione di macOS 12 Monterey non porta più con sé preinstallato PHP. Difatti, una nota nel conf http.conf di…
Docker – LETTURA 13 MINUTI Sviluppare PHP utilizzando Docker con Apache, MySQL e phpMyAdmin
La Containerization (che in italiano dovrebbe corrispondere alla parola bruttina Containerizzazione) è la tecnologia che negli ultimi anni è sicuramente…
Roba figa da
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.