首頁 >後端開發 >php教程 >php 模糊查詢的實作方法

php 模糊查詢的實作方法

怪我咯
怪我咯原創
2017-07-12 11:02:073996瀏覽

「模糊檢索」是與「精準搜尋」相反的概念,顧名思義,是指搜尋系統會自動依照使用者輸入關鍵字的同義詞進行模糊檢索,因此得出較多的檢索結果。同義詞由系統的管理介面配置。如配置了“電腦”與“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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn