(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
fnmatch — Prueba un nombre de fichero mediante un patrón de búsqueda
fnmatch() verifica si la cadena filename
cumple con el patrón de shell pattern
.
pattern
El pattern
a comparar. Habitualmente, el pattern
contendrá
caracteres genéricos como '?'
y '*'
.
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 (|).
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. |
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 ...";
}
?>
Actualmente, esta función no está disponible para sistemas no-POSIX, a excepción de Windows.