Heim >Backend-Entwicklung >PHP-Tutorial >So implementieren Sie Fuzzy-Abfragen in PHP (Grafikcode)
Der Inhalt dieses Artikels befasst sich mit der Implementierung von Fuzzy-Abfragen (Grafik- und Textcode) in PHP. Ich hoffe, dass er für Freunde hilfreich ist.
Im Wesentlichen aufschlussreiche PHP-Fuzzy-Query-Technologie
Finden Sie relevante Benutzer basierend auf den eingegebenen Schlüsselwörtern
Meistern Sie die Anwendung der PHP-Fuzzy-Technologie
Die Syntax der PHP-Fuzzy-Abfrage
Anwendung der PHP-Fuzzy-Abfrage
Datenbankdesign
Benutzertabelle ( Benutzer):
CREATE TABLE user( `uid` int(10) AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID', `username` varchar(30) NOT NULL DEFAULT '' COMMENT '用户名', `password` varchar(6) NOT NULL DEFAULT '' COMMENT '密码', `sex` char(2) NOT NULL DEFAULT '保密' COMMENT '性别', `email` varchar(40) NOT NULL DEFAULT '' COMMENT '邮箱', `hobby` varchar(255) NOT NULL DEFAULT '' COMMENT '兴趣爱好', KEY `username`(`username`)//索引 )ENGINE=MyISAM DEFAULT CHARSET=UTF8 COMMENT='用户表'
Vorteile der Indizierung:
Wenn Sie Daten gemäß einer bestimmten Bedingung abrufen und das Bedingungsfeld nicht indiziert ist, wird bei der Abfrage die gesamte Tabelle durchlaufen. Wenn Sie einen Index erstellen, basiert die Abfrage auf dem Index, wodurch die Abfrageleistung verbessert wird
SQL-Abgleichsmodus (der in der Entwicklung am häufigsten verwendete)
Muster für den Abgleich regulärer Ausdrücke
Sie können den Operator = oder != nicht verwenden, sondern den Operator LIKE oder NOT LIKE
verwendet den SQL-Matching-Modus. MYSQL bietet zwei Platzhalterzeichen:
①% steht für eine beliebige Anzahl beliebiger Zeichen (einschließlich 0)
②_ Jedes durch
dargestellte einzelne Zeichen verwendet den SQL-Übereinstimmungsmodus. Wenn das Übereinstimmungsformat keines der beiden oben genannten Platzhalterzeichen enthält, entspricht der Abfrageeffekt = oder !=
SQL-Abgleichsmuster verwenden, Groß- und Kleinschreibung standardmäßig nicht berücksichtigen
代码实现: SELECT * FROM user WHERE username like 'l%'; SELECT * FROM user WHERE username like '%e'; SELECT * FROM user WHERE username like '%o%'; SELECT * FROM user WHERE username like '___';//三个_,表示username为三个字符的结果集 SELECT * FROM user WHERE username like '_o%';//第二个字符为o
. entspricht jedem einzelnen Zeichen
* entspricht 0 oder mehr Zeichen davor
eg:x* 表示匹配任何数量的x字符
[] entspricht jedem Zeichen in Klammern
eg:[abc] 匹配字符a、b后者c [a-z] 匹配任何字母 [0-9] 匹配任何数字 [0-9]* 匹配任何数量的任何数字 [a-z]* 匹配任何数量的任何字母
^ bedeutet, dass es mit einem bestimmten Zeichen oder einer bestimmten Zeichenfolge beginnt
eg:^a 表示以字母a开头
$ stellt ein bestimmtes Zeichen- oder Zeichenfolgenergebnis dar
eg:s$ 表示以字母s结尾
Verwenden Sie reguläre Ausdrücke. Operatoren, die in Vergleichsmustern verwendet werden: REGEXP(RLIKE) oder NOT REGEXP(NOT RLIKE)
code:SELECT * FROM user WHERE username REGEXP '^l'; SELECT * FROM user WHERE username REGEXP '...';
PS: Wenn Sie nur das Platzhalterzeichen . verwenden, gibt es mehrere Punkt-Platzhalterzeichen, vorausgesetzt, N , dann stellt das passende Muster größer als dar oder gleich N
genaue Anzahl von Zeichen
^...$ //表示只能为三个字符 SELECT * FROM user WHERE username REGEXP '^...$';
<?php //关键字 $keywords = isset($_POST['keywords'])?$_POST['keywords']:''; //连接数据库,php7废弃了mysql_connect推荐使用 mysqli_connect$link = mysqli_connect( "localhost:3306", "root", "root", "mook"); if(!empty($keywords)){ $sql = "SELECT * FROM user WHERE username like '%{$keywords}%' "; }else{ $sql = "SELECT * FROM user"; }$usersArr = [];$result = $link->query($sql);while($row = $result->fetch_assoc()) { //简单高亮显示 // $row['username'] = str_replace($keywords, "<font color='red'>".$keywords."</font>",$row['username']); //高亮显示,不区分关键字的大小写 $usernameArr = preg_split('/(?<!^)(?!$)/u',$row['username']); foreach ($usernameArr as $key => $value) { if(strtoupper($keywords) == strtoupper($value)){ $usernameArr[$key] = "<font color='red'>".$value."</font>"; } } $row['username'] = join($usernameArr); $usersArr[] = $row; }?><!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php用户查询器</title> </head> <body> <h1>php模糊查询</h1> <form action="index.php" method="post"> 用户名:<input type="text" name="keywords" value="" /> <input type="submit" value="提交查询" /> </form> <?php if(!empty($keywords)){ echo "查询关键词:<font color='red'> ".$keywords." </font>结果!"; } $tableString = "<table width='500' border='1' cellpadding='5'>"; $tableString .= "<tr bgcolor='orange'><th>用户名</th><th>邮箱</th><th>性别</th></tr>"; if(!empty($usersArr)){ foreach ($usersArr as $key => $value) { $tableString .= "<tr><td>" . $value['username']. "</td><td>" . $value['email'] . "</td><td>".$value['sex']."</td></tr>"; } }else{ $tableString .="<tr><td colspan='3'>没有数据</td></tr>"; } $tableString .= "</table>"; echo $tableString; ?> </body> </html>
Quellcode-Download-Adresse:
Link :https: //pan.baidu.com/s/1F8duu8G2iCa4xgNLBbiLCg Passwort: 96fn
Verwandte Empfehlungen:
PHP-Codebeispiel, um zu erkennen, dass Mitgliedskonten nur eindeutig angemeldet werden können
PHP-Codebeispiel, um zu erkennen, dass ein Mitgliedskonto nur als Einziger angemeldet sein kann
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Fuzzy-Abfragen in PHP (Grafikcode). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!