array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'function.fnmatch.php', 1 => 'fnmatch', ), 'up' => array ( 0 => 'ref.filesystem.php', 1 => 'Funções do sistema de arquivos', ), 'prev' => array ( 0 => 'function.flock.php', 1 => 'flock', ), 'next' => array ( 0 => 'function.fopen.php', 1 => 'fopen', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/filesystem/functions/fnmatch.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
fnmatch — Compara nome de arquivo com um padrão
fnmatch() verifica se o parâmetro filename
informado
corresponde com o padrão de curingas shell pattern
.
pattern
O parâmetro pattern
deve conter o padrão para correspondência. Normalmente, pattern
conterá curingas como '?'
e '*'
.
Curinga | Descrição |
---|---|
?
|
Ponto de interrogação irá corresponder a um caractere único.
Por exemplo, o padrão "file?.txt" corresponderá a "file1.txt" e
"fileA.txt" , mas não a "file10.txt" .
|
*
|
Asteriscos corresponderá zero ou mais caracteres.
Por exemplo, o padrão "foo*.xml" corresponderá a "foo.xml" e
"foobar.xml" .
|
[ ]
|
Colchetes são usados para criar intervalos de caracteres ASCII ou conjuntos de caracteres.
Por exemplo, o padrão "index.php[45]" corresponderá a "index.php4" e
"index.php5" , mas não a "index.phpt" .
Intervalos bem conhecidos são [0-9] , [a-z] e [A-Z] .
Conjuntos e intervalos múltiplos podem ser usados ao mesmo tempo, por exemplo [0-9a-zABC] .
|
!
|
Ponto de exclamação é usado para negar caracteres dentro de colchetes.
Por exemplo, "[!A-Z]*.html" corresponderá a "demo.html" , mas não a
"Demo.html" .
|
\
|
Barra invertida é usada para escapar caracteres especiais.
Por exemplo, "Name\?" corresponderá a "Name?" , mas não a
"Names" .
|
filename
A string testada. Esta função é especialmente útil para nomes de arquivo, mas também pode ser usada em strings normais.
O usuário comum pode estar acostumado com padrões shell ou pelo menos, na sua
forma mais simples, aos curingas '?'
e '*'
.
Então usar fnmatch() ao invés de
preg_match() para
entrada de expressões de busca na interface com o usuário pode ser muito mais conveniente para
não programadores.
flags
O valor do parâmetro flags
pode ser qualquer combinação das
opções a seguir, unidos com o
operador binário OR (|).
Flag |
Descrição |
---|---|
FNM_NOESCAPE |
Desabilita escape por barra invertida. |
FNM_PATHNAME |
Barra na string somente corresponde a barra no padrão fornecido. |
FNM_PERIOD |
Um ponto no início da string deve corresponder a exatamente um ponto no padrão fornecido. |
FNM_CASEFOLD |
Não diferencia maiúsculas de minúsculas. Parte da extensão GNU. |
Exemplo #1 Comparando uma cor com um padrão de curingas shell
<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "alguma forma de cinza (grey ou gray) ...";
}
?>
Por enquanto esta função não está disponível em sistemas não-POSIX exceto pelo Windows.