• PHP站内搜索:多关键字、加亮显示


    一、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>  
  • 相关阅读:
    包含中文的js文件在从cdn搞到本地时造成的问题;
    查询杀死进程
    二维码显示在网页上
    二维码生成器和解析器-java
    N个任务,分配给M个人,那么每个人得到的任务数量----总结经验
    js中文转换成拼音
    Grails连接mysql数据库
    Grails框架+Intellij IDEA工具,写了一个对字符串进行转码,包括纯js转成Base64格式
    java冒泡排序
    对文字简单的加密解密
  • 原文地址:https://www.cnblogs.com/qhorse/p/4720858.html
Copyright © 2020-2023  润新知