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

# fnmatch

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

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

### Описание

function 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() - Возвращает отформатированную строку

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open