假設它是一個nub問題,但是在PHP中有沒有類似mysql的LIKE函數?mysql的模擬類似函數
因此,例如:
like('goo*','google.com');//is true
like('*gl*','google.com');//true
like('google.com','google.com')//also true
我知道正則表達式rullez,但不知道有什麼解決辦法達到這個
假設它是一個nub問題,但是在PHP中有沒有類似mysql的LIKE函數?mysql的模擬類似函數
因此,例如:
like('goo*','google.com');//is true
like('*gl*','google.com');//true
like('google.com','google.com')//also true
我知道正則表達式rullez,但不知道有什麼解決辦法達到這個
完成看一看的fnmatch
功能。
如果你想匹配字符串實際上是目錄中的文件,檢查出glob
功能:http://php.net/manual/en/function.glob.php
對於第一個,使用strpos
:
like('goo*','google.com'); --> strpos('goo','google.com') === 0
下一個,你可以使用strpos
:
like('*gl*','google.com'); --> strpos('gl', 'google.com') !== false;
你可以用下等於:
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')
編輯:轉換你的模式,以正則表達式,放置^
開頭,並且$
底,然後更換*
與.*
和逃生.
秒。
在5.3之前,這隻適用於Linux(可能不是問題,只是FYI。) – notJim 2010-04-29 17:59:11
@notJim,感謝您的糾正,儘管這不是問題:) – DCrystal 2010-04-29 18:01:08