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>  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM