假设这是一个小问题,但在PHP中是否有类似MySQL的LIKE函数?
所以,例如。
like('goo*','google.com');//is true
like('*gl*','google.com');//true
like('google.com','google.com')//also true
我知道regex rullez,但不知道有任何解决方案可以达到此目的
答案 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