php开发_多关键字,高亮显示

项目结构:

开始搜索:   这里搜索关键字("大""这")

搜索结果:  高亮显示

项目所需数据库结构:

================================================================

           实现代码:

================================================================

conn.php

1 <?php
2 $conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
3 mysql_select_db("form", $conn);
4 mysql_query("set names 'gbk'"); 
5 ?>

searchAndDisplayWithColor.php

 1 <?php
 2 include 'conn.php';
 3 ?>
 4 
 5 <table width=500 align="center">
 6     <form action="" method="get">
 7     <tr>
 8         <td>关键字:<input type="text" name="keyWord" />
 9         <input type="submit" value="搜索" /></td>
10     </tr>
11     </form>
12 </table>
13 
14 <table width=500 border="0" align="center" cellpadding="5"
15     cellspacing="1" bgcolor="#add3ef">
16     <?php
17     //关键字不为空的时候才执行相关搜索
18     if($_GET['keyWord']){
19     //用空格符把关键字分割开
20     $key=explode(' ', $_GET[keyWord]);
21     $sql="select * from message where title like '$key[0]' or title like '$key[1]' or content like '$key[0]' or content like '%$key[1]%'";
22     $query=mysql_query($sql);
23     while ($row=mysql_fetch_array($query)){
24         //替换关键字,并且把关键字高亮显示
25         $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[title]);
26         $row[title]=preg_replace("/$key[0]/i", "<font color=red><b>$key[1]</b></font>", $row[title]);
27         $row[content]=preg_replace("/$key[0]/i", "<font color=red><b>$key[0]</b></font>", $row[content]);
28         $row[content]=preg_replace("/$key[1]/i", "<font color=red><b>$key[1]</b></font>", $row[content]);
29         ?>
30 
31     <tr bgcolor="#eff3ff">
32         <td>标题:<font color="black"><?=$row[title]?></font> 用户:<font color="black"><?=$row[user] ?></font>
33         <div align="right"><a href="preEdit.php?id=<?=$row[id]?>">编辑</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a
34             href="delete.php?id=<?=$row[id]?>">删除</a></div>
35         </td>
36     </tr>
37     <tr bgColor="#ffffff">
38         <td>内容:<?=$row[content]?></td>
39     </tr>
40     <tr bgColor="#ffffff">
41         <td>
42         <div align="right">发表日期:<?=$row[lastdate]?></div>
43         </td>
44     </tr>
45     <?php }
46     }
47     ?>
48 </table>

说明:在这个小程序中,有一点不足之处在于,只能同时搜索两个关键字,并且中间用空格" "隔开,如果只是搜索一个关键字,如:"大" 显示的时候会出现乱码 ……^|_|^,这是由于下面代码的结果:

1 //用空格符把关键字分割开
2 $key=explode(' ', $_GET[keyWord]);

如果要改进的话,在这里的后面就要做一下判断了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

python flask里 post请求,JSON数据获取方式总结

#!flask/bin/python #encodig=utf-8 # _*_ coding:utf-8 _*_ # Writer : byz # dateTi...

5745
来自专栏程序员互动联盟

【专业技术】C语言EOF如何使用?

存在问题: 又一次遇到有人问EOF的用法,到底如何来使用那? 解决方案: 这里有一篇文章写的不错,希望对EOF没有理解的同学能有所帮助。 我学习C语言的时候,遇...

3908
来自专栏dizhiling专栏

一行命令实现cpu占用率100%

cat /proc/cpuinfo |grep "physical id" | wc -l 可以获得CPU的个数, 我们将其表示为N.

1261
来自专栏Java学习网

Java多线程技术的9大知识点总结——精心整理

1,进程和线程的概念。 |--进程:是程序的动态执行过程,它经历了从代码加载,执行,到执行完毕的一个完整过程。 |--线程:是实现并发机制的一个有效手段。 ? ...

2626
来自专栏lgp20151222

idea报错:Error running $classname: Command line is too long. Shorten command line for $classname.

打印的变量太长了,超过了限制,这都会报错...我只想知道idea基于什么原理会报这个错...

1.1K3
来自专栏各种机器学习基础算法

php链式操作的实现

一、什么是链式操作? 直接说链式操作,也许大家不清楚是什么,但是在平时使用框架的过程中,大家肯定见到过这样子的使用: $db->where()->limit()...

3607
来自专栏DannyHoo的专栏

APNS推送原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/de...

2793
来自专栏闵开慧

mapreduce主程序如何传递变量到map或者reduce函数中使用

    一般我们写的mapreduce主程序放在客户端机器上,执行任务时是在集群机器上,所以要将变量从主程序传递到我们自己写的map或者reduce函数中就不能...

4215
来自专栏Java工程师日常干货

【随笔】JVM核心:JVM运行和类加载

本篇博客将写一点关于JVM的东西,涉及JVM运行时数据区、类加载的过程、类加载器、ClassLoader、双亲委派机制、自定义类加载器等,这些都是博主自己的一点...

773
来自专栏Kevin-ZhangCG

[ Java面试题 ]多线程篇

2697

扫码关注云+社区

领取腾讯云代金券