fnmatch

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

fnmatchПроверяет совпадение имени файла с шаблоном

Описание

fnmatch(string $pattern, string $filename, int $flags = 0): bool

Функция fnmatch() проверяет, совпадает ли название файла или другая строка в аргументе filename с шаблоном pattern, который поддерживает подстановочные знаки командной оболочки.

Список параметров

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 принимает комбинации следующих флагов, которые объединяют оператором | — побитового ИЛИ.

Список флагов, которые поддерживает функция fnmatch()
Флаг Описание
FNM_NOESCAPE Отключить экранирование обратным слешем — интерпретировать как обыкновенный символ.
FNM_PATHNAME Исключить совпадение слеша в строке с подстановочными символами шаблона.
FNM_PERIOD Исключить совпадение точки в начале строки с подстановочными символами шаблона.
FNM_CASEFOLD Сопоставлять строки без учёта регистра. Флаг — часть расширения поведения функции в наборе инструментов GNU.

Возвращаемые значения

Функция возвращает true, если строка совпадает с шаблоном, иначе false.

Примеры

Пример #1 Проверка соответствия названия цвета шаблону с подстановочными символами командной оболочки

<?php

if (fnmatch("*gr[ae]y", $color)) {
echo
"Какая-то форма серого цвета...";
}

Примечания

Внимание

Функция пока доступна только на POSIX-совместимых системах и в ОС Windows.

Смотрите также

  • glob() - Находит файловые пути, которые совпадают с шаблоном
  • preg_match() - Выполняет проверку на соответствие регулярному выражению
  • sscanf() - Разбирает строку по условиям формата
  • printf() - Выводит отформатированную строку
  • sprintf() - Возвращает отформатированную строку