În dezvoltarea aplicațiilor web în PHP, una dintre sarcinile frecvente este căutarea, filtrarea și parcurgerea fișierelor dintr-un anumit director de pe server (de exemplu, imagini încărcate, fișiere de configurare sau scripturi modulare).
O modalitate simplă, elegantă și rapidă de a realiza acest lucru fără a scrie manual bucle complicate cu opendir() și readdir() o reprezintă funcția nativă glob(), disponibilă încă din versiunile de bază ale limbajului PHP.
Cum funcționează funcția glob() în PHP?
Funcția glob() caută toate căile care se potrivesc cu un anumit șablon (pattern) conform regulilor standard folosite în shell-ul Unix/Linux, returnând un tablou (array) cu fișierele și directoarele găsite.
Iată câteva exemple practice de utilizare pentru căutarea fișierelor după extensie:
<?php
// Găsește toate fișierele cu extensia .php din directorul curent
$files = glob('*.php');
// Găsește fișierele care au extensia .php sau .txt (folosind fanionul GLOB_BRACE)
$files2 = glob('*.{php,txt}', GLOB_BRACE);
// Afișăm rezultatele
echo '<pre>';
print_r($files);
print_r($files2);
echo '</pre>';
?>
Obținerea căilor absolute către fișiere
Dacă dorești să obții calea completă (absolută) din sistemul de fișiere pentru fiecare fișier identificat, poți combina funcția glob() cu funcția realpath() prin intermediul lui array_map():
<?php
// Caută toate imaginile JPEG care încep cu litera 'a' din directorul specificat
$files = glob('../imagini/a*.jpg');
// Transformă fiecare cale relativă în cale absolută pe server
$files = array_map('realpath', $files);
// Afișăm lista fișierelor cu calea completă
echo '<pre>';
print_r($files);
echo '</pre>';
?>
Funcția glob() acceptă și alți parametri utili sub formă de fanioane (flags), cum ar fi GLOB_ONLYDIR (pentru a lista exclusiv directoarele) sau GLOB_NOSORT (pentru a crește viteza de returnare dacă ordinea alfabetică nu este necesară).