0

SQL LIKE ステートメントと同じ機能を探しています。

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

ここで、「_」は 1 文字、「*」は複数を表します。

これらの文字を「*」の「.+」のような正規表現部分に置き換える必要がありますが、これらの2つの「_」と「*」を除いて、正規表現文字を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 に答える