fnmatch

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

fnmatchCompara nome de arquivo com um padrão

Descrição

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

fnmatch() verifica se o parâmetro filename informado corresponde com o padrão de curingas shell pattern.

Parâmetros

pattern

O parâmetro pattern deve conter o padrão para correspondência. Normalmente, pattern conterá curingas como '?' e '*'.

Curingas a serem usados no parâmetro pattern
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 (|).

Uma lista de opções possíveis para fnmatch()
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.

Valor Retornado

Retorna true se houver correspondência, false caso contrário.

Exemplos

Example #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) ...";
}
?>

Notas

Warning

Por enquanto esta função não está disponível em sistemas não-POSIX exceto pelo Windows.

Veja Também

  • glob() - Acha caminhos que combinam com um padrão
  • preg_match() - Realiza uma correspondência com expressão regular
  • sscanf() - Interpreta a entrada de uma string de acordo com um formato
  • printf() - Envia uma string formatada para a saída
  • sprintf() - Retona uma string formatada