fnmatch
funkcja
Sprawdza, czy nazwa pliku pasuje do wzorca powłoki (glob). Obsługuje * ? i klasy znaków []. Zwraca bool.
fnmatch(string $pattern, string $filename, int $flags = 0): bool
fnmatch dopasowuje ciąg znaków do wzorca glob — takiego samego, jakiego używa powłoka systemowa. Popularne symbole wieloznaczne:
| Symbol | Znaczenie |
|--------|-----------|
| * | dowolny ciąg znaków (w tym pusty) |
| ? | dokładnie jeden dowolny znak |
| [abc] | jeden znak z zestawu |
| [!abc] | jeden znak spoza zestawu |
Funkcja porównuje wyłącznie ciągi znaków, nie skanuje systemu plików. Aby przefiltrować listę plików, połącz ją z scandir lub glob.
<?php
declare(strict_types=1);
$pliki = scandir(__DIR__ . '/raporty');
foreach ($pliki as $plik) {
if (fnmatch('raport_*.csv', $plik)) {
echo 'Pasuje: ' . $plik . PHP_EOL;
}
}
// Proste testy:
var_dump(fnmatch('*.txt', 'raport.txt')); // true
var_dump(fnmatch('dane_*', 'dane_2024.csv')); // true
var_dump(fnmatch('*.php', 'index.html')); // false