Ce face fnmatch
fnmatch folosește aceleași metacaractere ca glob (*, ?, [abc]), dar verifică un singur text, fără să caute pe disc. Este util pentru a filtra liste de nume primite din altă parte.
Implicit face diferența între litere mari și mici. Cu FNM_CASEFOLD nu o mai face.
Parametri
| Parametru | Descriere |
|---|---|
$pattern |
Tiparul, de exemplu "*.jpg". |
$filename |
Numele verificat. |
$flags |
Opțional. FNM_CASEFOLD, FNM_PATHNAME, FNM_NOESCAPE, FNM_PERIOD. |
Ce returnează
true dacă numele se potrivește, altfel false.
Exemple
Exemplul 1: Filtrarea unei liste de nume
<?php
$fisiere = ["plaja.jpg", "CV.PDF", "factura-2026-10.pdf", "nota.txt"];
foreach ($fisiere as $nume) {
if (fnmatch("*.pdf", $nume, FNM_CASEFOLD)) {
echo $nume . "\n";
}
}
Rezultat
CV.PDF
factura-2026-10.pdf
Exemplul 2: Litere mari și mici
<?php
var_dump(fnmatch("*.jpg", "poza.jpg"));
var_dump(fnmatch("*.jpg", "POZA.JPG"));
var_dump(fnmatch("factura-202?-*", "factura-2026-10.pdf"));
Rezultat
bool(true)
bool(false)
bool(true)
Greșeli frecvente
- Folosești
fnmatchpentru a valida o extensie și uiți de litere mari."POZA.JPG"nu se potrivește cu"*.jpg"fărăFNM_CASEFOLD.
Comenzi înrudite
glob: Găsește fișierele ale căror căi se potrivesc cu un tipar, de exemplu poze/*.jpg.pathinfo: Împarte o cale de fișier în director, nume complet, nume fără extensie și extensie.str_contains: Verifică dacă un text conține alt text. Returnează true sau false.