0

我正在寻找一个与 SQL LIKE 语句相同的函数:

$match = match('abcdefg', 'a_c*fg');

其中“_”代表一个字符,“*”代表多个字符。

我需要用正则表达式部分替换这些字符,如“.+”代表“*”,但在它转义正则表达式字符之前,我应该用 preg_quote 转义这两个“_”和“*”。

有简单的方法吗?

4

1 回答 1

1

看看fnmatch函数

或者

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

要将您的模式转换为正则表达式,请在开头放置一个 ^,在末尾放置一个 $,然后将 * 替换为 .* 并转义 .s。

于 2012-09-20T10:20:24.757 回答