(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
fnmatch — Проверяет совпадение имени файла с шаблоном
Функция fnmatch() проверяет, совпадает ли название файла
или другая строка в аргументе filename с шаблоном pattern,
который поддерживает подстановочные знаки командной оболочки.
pattern
Шаблон pattern, с которым требуется сопоставить строку.
В аргумент pattern часто включают
подстановочные знаки наподобие '?' и '*'.
| Подстановочный знак | Описание |
|---|---|
?
|
Вопросительный знак соответствует одному произвольному символу.
Шаблон "file?.txt" совпадёт с названиями
файлов "file1.txt" и "fileA.txt",
но не совпадёт с названем "file10.txt".
|
*
|
Звёздочка соответствует нулю или большему количеству символов.
Шаблон "foo*.xml" совпадёт и с названием файла
"foo.xml", и с названием "foobar.xml".
|
[ ]
|
Квадратные скобки задают диапазоны или наборы отдельных символов в границах кодовых точек стандарта ASCII.
Шаблон "index.php[45]" совпадёт с названиями файлов
"index.php4" и "index.php5",
но не совпадёт с названием "index.phpt".
Популярные символьные группы: [0-9], [a-z]
и [A-Z]. Квадратные скобки поддерживают комбинации диапазонов и наборов символов:
[0-9a-zABC].
|
!
|
Восклицательный знак указывают для отрицания символов
внутри квадратных скобок. Шаблон "[!A-Z]*.html"
совпадёт с названием файла "demo.html",
но не совпадёт с названием "Demo.html".
|
\
|
Обратный слеш экранирует специальные символы.
Шаблон "Name\?" совпадёт со строкой
"Name?", не совпадёт со строкой "Names".
|
filenameПроверяемая строка. Функцией чаще проверяют названия файлов, но также проверяют строки.
Среднестатистический пользователь сайта или приложения привык строить
шаблоны в стиле командной оболочки, по крайней мере
с простейшими подстановками наподобие '?' и '*'.
Поэтому незнакомым с программированием пользователям проще вводить поисковые запросы
с подстановочными символами, а не с регулярными выражениями, а программисту обрабатывать
функцией fnmatch(), а не preg_match().
flags
Параметр flags принимает
комбинации следующих флагов, которые объединяют
оператором | — побитового ИЛИ.
Флаг |
Описание |
|---|---|
FNM_NOESCAPE |
Отключить экранирование обратным слешем — интерпретировать как обыкновенный символ. |
FNM_PATHNAME |
Исключить совпадение слеша в строке с подстановочными символами шаблона. |
FNM_PERIOD |
Исключить совпадение точки в начале строки с подстановочными символами шаблона. |
FNM_CASEFOLD |
Сопоставлять строки без учёта регистра. Флаг — часть расширения поведения функции в наборе инструментов GNU. |
Пример #1 Проверка соответствия названия цвета шаблону с подстановочными символами командной оболочки
<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "Какая-то форма серого цвета...";
}Функция пока доступна только на POSIX-совместимых системах и в ОС Windows.