像模拟MySQL的功能

时间:2010-04-29 17:39:24

标签: php function

假设这是一个小问题,但在PHP中是否有类似MySQL的LIKE函数?

所以,例如。

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

我知道regex rullez,但不知道有任何解决方案可以达到此目的

4 个答案:

答案 0 :(得分:8)

首先,使用strpos

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

下一个,您可以使用strpos

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

接下来你可以使用equals:

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

当然,您可以对所有这些使用正则表达式:

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')

修改:要将您的模式转换为正则表达式,请在开头放置^,在结尾放置$,然后将*替换为{ {1}}并转义.* s。

答案 1 :(得分:6)

查看fnmatch功能。

答案 2 :(得分:3)

所有这些方案都可以使用strpos

完成

答案 3 :(得分:0)

如果您要匹配的字符串实际上是目录中的文件,请查看glob函数:http://php.net/manual/en/function.glob.php