(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.