glob în PHP

Găsește fișierele ale căror căi se potrivesc cu un tipar, de exemplu poze/*.jpg.

Sintaxă
glob(string $pattern, int $flags = 0): array|false

Ce face glob

glob caută fișiere după un tipar cu metacaractere: * înseamnă orice text, ? un singur caracter, iar [abc] unul dintre caracterele din paranteze. Rezultatul conține căi complete, gata de folosit, sortate alfabetic.

Opțiuni utile: GLOB_ONLYDIR (doar directoare) și GLOB_BRACE, care permite {jpg,png}. GLOB_BRACE nu există pe unele sisteme, de exemplu Alpine Linux.

Parametri

Parametru Descriere
$pattern Tiparul căutat, de exemplu "uploads/*.pdf".
$flags Opțional. Constante GLOB_*, unite cu |.

Ce returnează

Un tablou cu căile găsite (gol dacă nu se potrivește nimic) sau false la eroare.

Exemple

Exemplul 1: Toate imaginile JPG

<?php
mkdir("galerie");
foreach (["plaja.jpg", "munte.jpg", "harta.png", "note.txt"] as $nume) {
    touch("galerie/$nume");
}

print_r(glob("galerie/*.jpg"));

Rezultat

Array
(
    [0] => galerie/munte.jpg
    [1] => galerie/plaja.jpg
)

Exemplul 2: Mai multe extensii și doar directoare

<?php
mkdir("site/teme", 0777, true);
mkdir("site/pluginuri");
touch("site/logo.png");
touch("site/fundal.jpg");

print_r(glob("site/*.{jpg,png}", GLOB_BRACE));
print_r(glob("site/*", GLOB_ONLYDIR));

Rezultat

Array
(
    [0] => site/fundal.jpg
    [1] => site/logo.png
)
Array
(
    [0] => site/pluginuri
    [1] => site/teme
)

Greșeli frecvente

  • Pe Linux, *.jpg nu găsește POZA.JPG: tiparul face diferența între litere mari și mici. Folosește *.{jpg,JPG} cu GLOB_BRACE sau *.[jJ][pP][gG].
  • Te aștepți să găsești și fișierele ascunse (cele care încep cu punct, ca .htaccess). * nu le include.

Comenzi înrudite

  • scandir: Returnează lista fișierelor și directoarelor dintr-un director, sortată alfabetic.
  • unlink: Șterge un fișier de pe disc.
  • is_file: Verifică dacă o cale indică un fișier obișnuit (nu un director).