ファイル名がパターンにマッチするか調べる

# fnmatch

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

fnmatch — ファイル名がパターンにマッチするか調べる

### 説明

fnmatch ( string `$pattern` , string `$string` [, int `$flags` = 0 ] ) : bool

fnmatch()は`string` で指定された文字列が `pattern` で指定されたシェルワイルドカードにマッチするかどうかチェックします。

### パラメータ

`pattern`

  シェルのワイルドカードパターン。

`string`

  調べたい文字列。この機能は特にファイル名のマッチに便利ですが、 通常の文字列に関しても使用できます。

  一般的なユーザーにとって、シェルパターンやあるいは少なくとも '?'と'*'によるワイルドカードのほうが 慣れていると思われます。そのため、 preg_match() の代わりに fnmatch() をフロントエンドの検索表現として使うことは、 プログラマではないユーザーにとってより便利でしょう。

`flags`

  `flags` の値は、以下のフラグを 論理 OR (|) 演算子 で連結した任意の組み合わせです。

  fnmatch() で使えるフラグ
  `フラグ` | 説明
  --- | ---
  `FNM_NOESCAPE` | バックスラッシュのエスケープを無効にする。
  `FNM_PATHNAME` | 文字列内のスラッシュは、指定したパターン内のスラッシュにのみマッチする。
  `FNM_PERIOD` | 文字列の先頭のピリオドは、指定したパターン内のピリオドにマッチしなければならない。
  `FNM_CASEFOLD` | 大文字小文字を区別しないマッチ。GNU 拡張の一部。

### 返り値

マッチした場合に `TRUE`、それ以外の場合に `FALSE` を返します。

### 変更履歴

バージョン | 説明
--- | ---
5.3.0 | この関数は Windows プラットフォームでも動作するようになりました。

### 例

例1 シェルのワイルドカードパターンによる色の名前のチェック

`<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "some form of gray ...";
}
?>`

### 注意

警告

今のところ、この機能は POSIX に準拠していないシステムで利用できません (ただし、Windows では利用できます)。

### 参考

- glob() - パターンにマッチするパス名を探す
- preg_match() - 正規表現によるマッチングを行う
- sscanf() - フォーマット文字列に基づき入力を処理する
- printf() - フォーマット済みの文字列を出力する
- sprintf() - フォーマットされた文字列を返す