博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP站内搜索:多关键字、加亮显示
阅读量:7240 次
发布时间:2019-06-29

本文共 2011 字,大约阅读时间需要 6 分钟。

一、SQL语句中的模糊查找
       主要通过LIKE(不区分大小写)关键字实现模糊查找。LIKE条件一般用在指定搜索某字段的时候, 通过
"
%
"或者
"
 _
" 通配符的作用实现模糊查找功能,通配符可以在字段前面也可以在后面或前后都有。只通过LIKE是无法实现模糊查找的,因此通配符的作用不可忽略。
下面是三个实例:
搜索以PHP开头:
SELECT * FROM table WHERE title  LIKE  
'
PHP%
' 
搜索以PHP结束:
SELECT * FROM table WHERE title  LIKE  
'
%PHP
'
搜索包含PHP100:
SELECT * FROM table WHERE title  LIKE  
'
%PHP%
' 
注:%表示0个或多个字符构成的字符串,_表示单个字符,类似于正则表达式中元字符的作用
在LIKE后面可以增加其他条件,类似于if语句
例子的数据库中的内容
<?php  
    $conn = @mysql_connect(
"
localhost
"
"
root
"
"") or die(
"
数据库链接错误
");  
    mysql_select_db(
"
bbs
", $conn);  
    mysql_query(
"
set names 'utf-8'
"); 
//
使用utf8中文编码;  
      
    
if($_GET[
'
key
']) {  
          
        $sql = 
"
SELECT * FROM `text` WHERE content LIKE '%$_GET[key]%'
";  
        $query = mysql_query($sql);  
          
        
while($r=mysql_fetch_array($query)) {  
            echo 
"
$r[content]
".
"
<br>
";  
        }  
    }  
      
?>  
  
<html>  
    <body>  
    <form action=
"" method=
"
get
">  
    关键字:  
    <input type=
"
text
" name=
"
key
" />  
    <input type=
"
submit
" name=
"
sub
" value=
"
搜索
" />  
    </form>  
    </body>  
</html>  
二、多个关键字搜索的原理和技巧
单个关键字搜索的步骤:提交表单->PHP文件接收关键字->执行SQL->输出结果
如果是多关键字的时候:在提交表单的时候将多个关键字用空格或+号分隔开,然后PHP文件接收到所提交的字符串后,通过一些函数如:explore函数将字符串拆分成多个关键字存放在数组中;然后就可以在数据库中通过多个LIKE模糊查找得到所要查找的内容。
三、替换关键字高亮显示
通过模糊查找得到所要的内容后,使用正则表达式替换所要查找的内容,可以通过改变颜色,加粗等改变显示的效果。
<?php  
    $conn = @mysql_connect(
"
localhost
"
"
root
"
"") or die(
"
数据库链接错误
");  
    mysql_select_db(
"
bbs
", $conn);  
    mysql_query(
"
set names 'utf-8'
"); 
//
使用utf8中文编码;  
      
    
if($_GET[
'
key
']) {  
        $k = explode(
"
 
", $_GET[key]);  
          
        $sql = 
"
SELECT * FROM `text` WHERE content LIKE '%$k[0]%' or content LIKE '%$k[1]%'
";  
        $query = mysql_query($sql);  
          
        
while($r=mysql_fetch_array($query)) {  
            $r[content] = preg_replace(
"
/($k[0])/i
"
"
<font color=red><b>\\1</b></font>
", $r[content]);  
            $r[content] = preg_replace(
"
/($k[1])/i
"
"
<font color=red><b>\\1</b></font>
", $r[content]);  
            echo 
"
$r[content]
".
"
<br>
";  
        }  
    }  
      
?>  
  
<html>  
    <body>  
    <form action=
"" method=
"
get
">  
    关键字:  
    <input type=
"
text
" name=
"
key
" />  
    <input type=
"
submit
" name=
"
sub
" value=
"
搜索
" />  
    </form>  
    </body>  
</html>  

转载于:https://www.cnblogs.com/qhorse/p/4720858.html

你可能感兴趣的文章
redis-cluster研究和使用
查看>>
关于驰骋工作流引擎ccbpm 在工业自动化环境下的应用演示实例
查看>>
【序言】 高效高可靠消息服务器构建
查看>>
每天一个linux命令(6):rmdir 命令
查看>>
第六周作业
查看>>
浅谈Vim
查看>>
高端数据中心交换机散热系统大比拼
查看>>
Jira Epic在完成状态时,如何让Epic在Scrum面板待办事项中不显示?
查看>>
整理一下Entity Framework的查询
查看>>
添加引号的 java 正则表达式5
查看>>
关于IDEA不能实时编译的一个临时解决办法。。。。
查看>>
smali文件对比java文件(转)
查看>>
SpringBoot2.0 配置Log4j2记录日志
查看>>
JS 获取 CSS 样式
查看>>
使用myeclipse的反向工程来生成相应的hibernate映射文件和POJO类
查看>>
正则 基本用法
查看>>
产品上线前如何搭建团队运营体系
查看>>
Android 4.2蓝牙介绍
查看>>
Google资深工程师详解Android的系统架构
查看>>
我的友情链接
查看>>