|
|
 |
fnmatch (PHP 4 >= 4.3.0, PHP 5) fnmatch -- Comparar un nombre de archivo contra un
patrón Descripciónbool fnmatch ( string patron, string cadena [, int banderas] )
fnmatch() verifica si la
cadena pasada coincide con el
comodÃn de intérprete de comandos dado,
patron.
Esto es especialmente útil para nombres de archivos, pero
también puede ser usado sobre cadenas comunes. El usuario
promedio puede encontrarse familiarizado con patrones de
intérprete de comandos, o, por lo menos en su forma
más simple, con los comodines '?' y
'*', asà que el uso de
fnmatch() en lugar de
ereg() o preg_match() para
el procesamiento de expresiones de búsqueda puede ser
mucho más conveniente para usuarios no-programadores.
Ejemplo 1.
Verificar un nombre de color contra un patrón de
comodines de intérprete de comandos.
|
<?php
if (fnmatch("*gr[ae]y", $color)) {
echo "alguna forma de gris (gray) ...";
}
?>
|
|
| Aviso |
Por ahora, esta función no se encuentra disponible en
Windows ni otros sistemas no-compatibles con POSIX.
|
Vea también glob(),
ereg(), preg_match() y la
página man Unix sobre fnmatch(3) para
consultar los nombres de banderas (mientras no estén
documentados aquÃ).
soywiz at php dot net
17-Jul-2006 07:12
A better "fnmatch" alternative for windows that converts a fnmatch pattern into a preg one. It should work on PHP >= 4.0.0
<?php
if (!function_exists('fnmatch')) {
function fnmatch($pattern, $string) {
return @preg_match('/^' . strtr(addcslashes($pattern, '\\.+^$(){}=!<>|'), array('*' => '.*', '?' => '.?')) . '$/i', $string);
}
}
?>
jsnell at networkninja dot com
02-Mar-2006 07:12
The last line of soywiz at gmail dot com windows replacement should be changed to:
return preg_match('/' . $npattern . '$/i', $string);
otherwise, a pattern for *.xml will match file.xml~ or any else anything with the text *.xml in it, regardless of position.
soywiz at gmail dot com
26-Jul-2005 04:07
A "fnmatch" alternative that converts the pattern, to a valid preg one and uses preg_match then. It will work on windows.
<?php
if (!function_exists('fnmatch')) {
function fnmatch($pattern, $string) {
for ($op = 0, $npattern = '', $n = 0, $l = strlen($pattern); $n < $l; $n++) {
switch ($c = $pattern[$n]) {
case '\\':
$npattern .= '\\' . @$pattern[++$n];
break;
case '.': case '+': case '^': case '$': case '(': case ')': case '{': case '}': case '=': case '!': case '<': case '>': case '|':
$npattern .= '\\' . $c;
break;
case '?': case '*':
$npattern .= '.' . $c;
break;
case '[': case ']': default:
$npattern .= $c;
if ($c == '[') {
$op++;
} else if ($c == ']') {
if ($op == 0) return false;
$op--;
}
break;
}
}
if ($op != 0) return false;
return preg_match('/' . $npattern . '/i', $string);
}
}
?>
phlipping at yahoo dot com
06-Aug-2003 03:59
you couls also try this function that I wrote before I found fnmatch:
function WildToReg($str)
{
$s = "";
for ($i = 0; $i < strlen($str); $i++)
{
$c = $str{$i};
if ($c =='?')
$s .= '.'; // any character
else if ($c == '*')
$s .= '.*'; // 0 or more any characters
else if ($c == '[' || $c == ']')
$s .= $c; // one of characters within []
else
$s .= '\\' . $c;
}
$s = '^' . $s . '$';
//trim redundant ^ or $
//eg ^.*\.txt$ matches exactly the same as \.txt$
if (substr($s,0,3) == "^.*")
$s = substr($s,3);
if (substr($s,-3,3) == ".*$")
$s = substr($s,0,-3);
return $s;
}
if (ereg(WildToReg("*.txt"), $fn))
print "$fn is a text file";
else
print "$fn is not a text file";
| |
| | Citas célebres | Si quieres ir al mar sin riesgo de naufragar, no te compres un barco, cómprate una isla. Marcel Pagnol Director de cine y guionista francés (1895-1974) | | Citas en tu mail | | ©Contenidos Gratis |
| Inicio | Acción | Estrategia | Palabras | Puzzles | Solitarios | Foro Trucos |  | Cake Mania Jugadores: 6835 Categoría del juego: Acción Objetivo del juego: Ayuda a Jill a recuperar la pastelería de su abuela llevando su propia pastelería; consigue clientes y gana dinero. |
|  | Rainbow Web Jugadores: 2199 Categoría del juego: Puzzles Objetivo del juego: Rompe un pegajoso hechizo y salva un reino de fantasía en Rainbow Web. Tendrás toneladas de diversión mientras juegas a este mágico desafío para la mente. |
|  | Mahjongg Fortuna Jugadores: 12462 Categoría del juego: Solitarios Objetivo del juego: Velocidad y habilidad mental son las armas más importantes en esta versión de un antiguo juego asiático. Despeja el tablero lo antes posible haciendo clic en las fichas iguales y gánate la fama eterna de la puntuación más alta. |
|  | Chainz 2 Jugadores: 6955 Categoría del juego: Puzzles Objetivo del juego: Entra en el mundo de las combinaciones con Chainz 2: Relinked, emocionante secuela del exitazo del año pasado, Chainz. Gira eslabones y crea combinaciones de 3 ó más. |
|  | Delicious Jugadores: 4405 Categoría del juego: Acción Objetivo del juego: ¿Eres un as de la multitarea? ¿Quieres que tus clientes estén contentos? ¡Pues Delicious es tu juego! Sacia el apetito de los clientes y tenlos contentos; ¡no te arriesgues! |
|  | Bookworm Jugadores: 4568 Categoría del juego: Palabras Objetivo del juego: Junta las letras para formar palabras. ¡Las palabras más largas valen más puntos! |
|  | Zuma Jugadores: 4976 Categoría del juego: Acción Objetivo del juego: Controla el ídolo de la rana de piedra de los antiguos Zuma en este intrigante enigma de acción. ¡Dispara bolas para formar conjuntos de tres, pero si dejas que lleguen a la calavera dorada morirás! |
|  | Jewel of Atlantis Jugadores: 3798 Categoría del juego: Puzzles Objetivo del juego: Descubre la ciudad hundida de la Atlántida y busca valiosos tesoros. Viaja más allá de las profundidades del mar y vive trepidantes aventuras en Jewel of Atlantis. |
|  | Jewel Quest Jugadores: 3727 Categoría del juego: Puzzles Objetivo del juego: Convierte la arena de la antigua selva en oro tan rápido como puedas juntando grupos de 3 elementos. ¡Los grupos más grandes valen más puntos! |
|  | Bejeweled 2 Jugadores: 3659 Categoría del juego: Puzzles Objetivo del juego: Con cuatro modos de juego únicos y fascinantes, nuevas piezas de juego explosivas e imponentes fondos planetarios, Bejeweled 2 es mucho más adictivo que nunca. |
|
|