# fnmatch

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

fnmatch — Teste un nom de fichier au moyen d'un masque de recherche

### Description

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

fnmatch() vérifie si la chaîne `filename` va passer le masque Shell `pattern`.

### Liste de paramètres

`pattern`

  Le `pattern` à comparer. Habituellement, le `pattern` contiendra des caractères génériques tels que `'?'` et `'*'`.

  Caractères génériques à utiliser dans le paramètre `pattern`
  Caractère générique | Description
  --- | ---
  `?` | Le point d'interrogation correspondra à n'importe quel caractère unique. Par exemple, le motif `"file?.txt"` correspondra à `"file1.txt"` et `"fileA.txt"`, mais ne correspondra pas à `"file10.txt"`.
  `*` | L'astérisque correspondra à zéro ou plusieurs caractères. Par exemple, le motif `"foo*.xml"` correspondra à `"foo.xml"` et `"foobar.xml"`.
  `[ ]` | Les crochets sont utilisés pour créer des plages de points de code ASCII ou des ensembles de caractères. Par exemple, le motif `"index.php[45]"` correspondra à `"index.php4"` et `"index.php5"`, mais ne correspondra pas à `"index.phpt"`. Des plages bien connues sont `[0-9]`, `[a-z]` et `[A-Z]`. Plusieurs ensembles et plages peuvent être utilisés simultanément, par exemple `[0-9a-zABC]`.
  `!` | Le point d'exclamation est utilisé pour nier les caractères dans les crochets. Par exemple, `"[!A-Z]*.html"` correspondra à `"demo.html"`, mais ne correspondra pas à `"Demo.html"`.
  `\` | Le backslash est utilisé pour échapper les caractères spéciaux. Par exemple, `"Name\?"` correspondra à `"Name?"`, mais ne correspondra pas à `"Names"`.

`filename`

  La chaîne testée. Cette fonction est particulièrement utile pour les noms de fichier, mais peut également être utilisée sur des chaînes régulières.

  L'utilisateur moyen de Shell peut être familier avec les masques Shell, ou tout au moins, leurs expressions les plus simples, comme `'?'` et `'*'`. De cette façon, utiliser fnmatch() au lieu de preg_match() pour des recherches peut être plus pratique pour les non-initiés.

`flags`

  La valeur de `flags` peut être une combinaison des drapeaux suivants, joins avec l' opérateur binaire OR (|).

  Liste des drapeaux possibles pour fnmatch()
  `Flag` | Description
  --- | ---
  `FNM_NOESCAPE` | Désactive l'échappement des antislashes.
  `FNM_PATHNAME` | Un slash dans une chaîne correspond uniquement à un slash dans le masque fourni.
  `FNM_PERIOD` | Un point en début de chaîne doit correspondre exactement à un point dans le masque fourni.
  `FNM_CASEFOLD` | Les correspondances ne tiennent pas compte de la casse. Fait parti de l'extension GNU.

### Valeurs de retour

Retourne `true` s'il y a des résultats, `false` sinon.

### Exemples

Exemple #1 Vérifier le nom d'une couleur avec un masque Shell

`<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "des formes de gris ...";
}
?>`

### Notes

Avertissement

Actuellement, cette fonction n'est pas disponible pour les systèmes non-POSIX, à l'exception de Windows.

### Voir aussi

- glob() - Recherche des chemins qui vérifient un masque
- preg_match() - Effectue une recherche de correspondance avec une expression rationnelle standard
- sscanf() - Analyse une chaîne à l'aide d'un format
- printf() - Affiche une chaîne de caractères formatée
- sprintf() - Retourne une chaîne formatée