fnmatch

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

fnmatchPrueba un nombre de fichero mediante un patrón de búsqueda

Descripción

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

fnmatch() verifica si la cadena filename cumple con el patrón de shell pattern.

Parámetros

pattern

El pattern a comparar. Habitualmente, el pattern contendrá caracteres genéricos como '?' y '*'.

Caracteres genéricos a utilizar en el parámetro pattern
Carácter genérico Descripción
? El signo de interrogación coincidirá con cualquier carácter único. Por ejemplo, el patrón "file?.txt" coincidirá con "file1.txt" y "fileA.txt", pero no coincidirá con "file10.txt".
* El asterisco coincidirá con cero o más caracteres. Por ejemplo, el patrón "foo*.xml" coincidirá con "foo.xml" y "foobar.xml".
[ ] Los corchetes se utilizan para crear rangos de puntos de código ASCII o conjuntos de caracteres. Por ejemplo, el patrón "index.php[45]" coincidirá con "index.php4" y "index.php5", pero no coincidirá con "index.phpt". Rangos conocidos son [0-9], [a-z] y [A-Z]. Varios conjuntos y rangos pueden utilizarse simultáneamente, por ejemplo [0-9a-zABC].
! El signo de exclamación se utiliza para negar caracteres dentro de los corchetes. Por ejemplo, "[!A-Z]*.html" coincidirá con "demo.html", pero no coincidirá con "Demo.html".
\ La barra invertida se utiliza para escapar caracteres especiales. Por ejemplo, "Name\?" coincidirá con "Name?", pero no coincidirá con "Names".

filename

La cadena a probar. Esta función es particularmente útil para los nombres de fichero, pero también puede utilizarse con cadenas regulares.

El usuario medio de Shell puede estar familiarizado con los patrones de Shell, o al menos, sus expresiones más simples, como '?' y '*'. De esta manera, utilizar fnmatch() en lugar de preg_match() para búsquedas puede ser más práctico para los no iniciados.

flags

El valor de flags puede ser una combinación de los siguientes flags, unidos con el operador binario OR (|).

Lista de flags posibles para fnmatch()
Flag Descripción
FNM_NOESCAPE Desactiva el escape de las barras invertidas.
FNM_PATHNAME Una barra diagonal en una cadena coincide únicamente con una barra diagonal en el patrón proporcionado.
FNM_PERIOD Un punto al inicio de la cadena debe coincidir exactamente con un punto en el patrón proporcionado.
FNM_CASEFOLD Las coincidencias no distinguen mayúsculas y minúsculas. Forma parte de la extensión GNU.

Valores devueltos

Devuelve true si hay resultados, false en caso contrario.

Ejemplos

Ejemplo #1 Verificar el nombre de un color con un patrón de Shell

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

Notas

Advertencia

Actualmente, esta función no está disponible para sistemas no-POSIX, a excepción de Windows.

Ver también

  • glob() - Búsqueda de rutas que coinciden con un patrón
  • preg_match() - Realiza una comparación con una expresión regular
  • sscanf() - Interpreta un string de entrada de acuerdo con un formato
  • printf() - Imprimir una cadena con formato
  • sprintf() - Devuelve un string formateado