(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Проверяемая строка. Функцией часто проверяют имена файлов, но также проверяют строки.
Среднеподготовленные посетители сайтов пользуются шаблонами
командной оболочки или хотя бы несложными формами
подстановок вроде «?» и «*».
Поэтому для сопоставления поискового выражения, которое
в пользовательской части сайта вводят незнакомые с программированием
пользователи, вместо функции preg_match() лучше пользоваться
функцией fnmatch().
flags
Параметр flags принимает
комбинации следующих флагов, которые объединяют
двоичным оператором
ИЛИ (|).
Флаг |
Описание |
|---|---|
FNM_NOESCAPE |
Отключить экранирование обратным слешем. |
FNM_PATHNAME |
Слеш в строке совпадает только со слешем в шаблоне. |
FNM_PERIOD |
Ведущая точка в строке должна точно совпадать с точкой в шаблоне. |
FNM_CASEFOLD |
Совпадение без учёта регистра. Часть расширения GNU. |
Пример #1 Проверка соответствия названия цвета шаблону подстановки командной оболочки
<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "Какая-то форма серого цвета...";
}
?>Функция пока недоступна на POSIX-несовместимых системах, кроме Windows.