「模糊檢索」是與「精準搜尋」相反的概念,顧名思義,是指搜尋系統會自動依照使用者輸入關鍵字的同義詞進行模糊檢索,因此得出較多的檢索結果。同義詞由系統的管理介面配置。如配置了“電腦”與“computer”為同義詞後,檢索“電腦”,則包含“computer”的網頁也會出現在檢索結果中。模糊檢索也就是同義詞檢索,這裡的同義詞是使用者透過「檢索管理」中的「同義詞詞典」來配置的。當使用者在檢索頁面中輸入同義詞中任何一個字檢索時,只要選取「模糊檢索」複選框,則該關鍵字的所有同義詞資訊也都被檢索出來。
下面小編就為大家帶來一篇PHP模糊查詢的實作方法(推薦)。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
模式查詢
#1. SQL匹配模式
#2. 正規表示式匹配模式(一般不建議使用)
SQL匹配模式
1.使用sql匹配模式,不能使用操作符=或! =,而是使用運算符LIKE或NOT LIKE;
2.使用sql匹配模式,MYSQL提供了2種通配符。
%表示任意數量的任意字元(其中包括0個)
_表示任意單一字元
3.使用sql匹配模式,如果匹配格式中不包含以上2種通配符中的任一個,其查詢的效果等同於=或! =
4.使用sql匹配模式,匹配時,不區分大小寫
#查询用户名以某个字符开头的用户 #查询用户名以字符'l'开头的用户: l% SELECT * FROM user WHERE username LIKE 'l%'; #查询用户名以某个字符结尾的用户 #查询用户名以字符'e'结尾的用户:e% SELECT * FROM user WHERE username LIKE 'e%'; #查询用户名包含某个字符的用户 #查询用户名包含字符'o'的用户:%o% SELECT * FROM user WHERE username LIKE '%o%'; #查询包含三个字符的用户 SELECT * FROM user WHERE username LIKE '_'; #查询用户名第二个字符为o的用户:_o% SELECT * FROM user WHERE username LIKE '_o%';
#正規表示式匹配模式
通配符(正規表示式)
.符合任意的單一字元
*符合0個或多個在它前面的字元
x*表示符合任何數量的x字元
[..]符合中括號中的任意字元
[abc]符合字元ab或c
[a-z]符合任意字母
[0-9]符合任意數字
[0-9]*符合任意數量的任何數字
[a-z]*符合任何數量的字母
^表示以某個字元或字串開始
^a 表示以字母a開頭
$表示以某個字元或字串結尾
s$表示以字母s結尾
使用正規表示式符合模式使用的運算元是:
REGEXP 或NOT REGEXP(RLIKE 或NOT RLIKE)
注意:正規表示式符合模式,其正規表示式出現在符合欄位的任意位置,
其模式就算匹配了,不必在兩側放一個通配符來使得其匹配;
#如果僅用通配符. 來匹配,假設N個,那麼其匹配模式表示,大於等於N個;
怎麼理解上面這句話呢?
就是說
... 符合大於等於3個字元的資料
.... 符合大於等於4個字元的資料
#查詢使用者名稱以字元l開頭的使用者:^l;
#正規表示式寫法
SELECT * FROM user WHERE username REGEXP '^l'; #sql匹配模式写法: SELECT * FROM user WHERE username LIKE 'l%'; #查询用户名正好是三个字符的用户:^...$; #sql匹配模式写法: SELECT * FROM user WHERE username LIKE '_'; #正则表达式写法 SELECT * FROM user WHERE username REGEXP '^...$';
以上是php 模糊查詢的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!