2010-04-29 764 views
5

Supongamos que es una pregunta nudo, pero no es un análogo de la de MySQL como la función en php?analógico PHP de MySQL como función

Por lo tanto, p. Ej. :

like('goo*','google.com');//is true 
like('*gl*','google.com');//true 
like('google.com','google.com')//also true 

Sé rullez expresiones regulares, pero no conozco a ninguna solución para llegar a este

Respuesta

6

Tome un vistazo a la función fnmatch.

+5

Antes de 5.3, esto sólo funciona en Linux (probablemente no es un problema, sólo para tu información.) – notJim

+0

@notJim, gracias por la rectificación, aunque no es realmente un problema :) – DCrystal

0

En el caso de las cadenas que desea hacer coincidir en realidad son archivos en un directorio, echa un vistazo a la función glob: http://php.net/manual/en/function.glob.php

+3

Eso no es ni siquiera cerca de lo mismo. – notJim

+0

glob() está bien, pero no se puede utilizar con las cadenas habituales, supongo ... Gracias por – DCrystal

+0

señalando que 'glob()' es específico de los archivos en un directorio, las cadenas no arbitrarias. He editado la respuesta para aclarar. –

3

todos esos escenarios se puede lograr con strpos

+0

Gracias, simplemente no quiero hacer otra rueda :) – DCrystal

+0

¿cómo es substr bueno para esto ?! debe ser un nuevo uso para eso? – OIS

+0

lol ... me significaba strpos – Rich

8

Para el primero, usar strpos:

like('goo*','google.com');  --> strpos('goo','google.com') === 0 

El siguiente, puede utilizar strpos:

like('*gl*','google.com');  --> strpos('gl', 'google.com') !== false; 

El siguiente sólo puede utilizar es igual a:

like('google.com','google.com') --> 'google.com' == 'google.com' 

De Por supuesto, puede usar expresiones regulares para todas ellas:

like('goo*','google.com');  --> preg_match('#^goo.*$#','google.com') 
like('*gl*','google.com');  --> preg_match('#^.*gl.*$#', 'google.com'); 
like('google.com','google.com') --> preg_match('#^google\.com$#', 'google.com') 

Editar: para convertir sus patrones de expresiones regulares, colocar una ^ al principio, y una $ al final, luego vuelva a colocar * con .* y escapar . s.

Cuestiones relacionadas