php站内搜索并高亮显示关键字的实现代码


Posted in PHP onDecember 29, 2011
<?php 
require_once 'sqlTools.class.php';//封装类,可执行dql、dml语句 
$info=$_POST['info']; 
$sql="select name,password,email from user_500 where name like '%$info%' or password like '%$info%' or email like '%$info%'"; 
$sqlTools=new SqlTools(); 
$res=$sqlTools->execute_dql($sql); 
while ($row=mysql_fetch_assoc($res)){ 
$row['name']=preg_replace("/($info)/i","<b style=\"color:red\">\\1</b>",$row['name']); 
$row['password']=preg_replace("/($info)/i","<b style=\"color:red\">\\1</b>",$row['password']); 
$row['email']=preg_replace("/($info)/i","<b style=\"color:red\">\\1</b>",$row['email']); 
echo $row['name']."-->".$row['password']."-->".$row['email']."<br>"; 
} 
?>

思路分析:
将sql语句中包含的%$info%交给DBMS执行的时候,他会查找字段中含有变量$info的值的信息,
%$info--->查找以$info的值结束的信息
$info%--->查找以$info的值开头的信息
通过正则函数preg_replace()将搜索到的关键字高亮显示,比如,

  $row['name']=preg_replace("/($info)/i","<b style=\"color:red\">\\1</b>",$row['name']);

  的意思是:通过POST方接收到的值$info替换为加上样式(红色加粗)的结果,并将结果重新赋给$row[‘name']
如果要搜索多个关键字的话,可以对接收到值$info进行分割,比如$info_more=explode(" ",$info);//这种方式能对以空格隔开的关键字进行分割,再对分割后的结果挨个进行查询,同样,可以使用正则表达式函数进行替换工作,以高亮显示关键字
sqlTools.class.php的源代码:

<?php 
class SqlTools{ 
private $host="localhost"; 
private $dbname="test"; 
private $dbuser="root"; 
private $dbpwd=""; 
private $conn; 
public function __construct(){ 
$this->conn=mysql_connect($this->host,$this->dbuser,$this->dbpwd); 
if(!$this->conn){ 
die("连接数据库失败".mysql_error()); 
} 
mysql_select_db($this->dbname,$this->conn) or die("找不到该数据库".mysql_error()); 
mysql_query("set names utf8"); 
} 
public function execute_dml($sql){ 
$bool=mysql_query($sql); 
if ($bool){ 
if ($bool>0) { 
return 1; 
}else{ 
return 2; 
} 
}else { 
return 0; 
} 
} 
public function execute_dql($sql){ 
$res=mysql_query($sql); 
return $res; 
} 
public function close_conn(){ 
mysql_close($this->conn); 
} 
} 
?>

原创文章:WEB开发_小飞
PHP 相关文章推荐
PHP高级OOP技术演示
Aug 27 PHP
php 文件上传类代码
Aug 06 PHP
那些年一起学习的PHP(一)
Mar 21 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
php对文件进行hash运算的方法
Apr 03 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
Oct 19 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 #PHP
PHP防CC攻击实现代码
Dec 29 #PHP
php curl常见错误:SSL错误、bool(false)
Dec 28 #PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 #PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 #PHP
PHP写UltraEdit插件脚本实现方法
Dec 26 #PHP
url decode problem 解决方法
Dec 26 #PHP
You might like
php基础学习之变量的使用
2011/06/09 PHP
PHP实现的比较完善的购物车类
2014/12/02 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
零基础学JavaScript最新动画教程+iso光盘下载
2008/01/22 Javascript
执行iframe中的javascript方法
2008/10/07 Javascript
基于jQuery的图片左右无缝滚动插件
2012/05/23 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
nodejs中实现路由功能
2014/12/29 NodeJs
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
Vue 2中ref属性的使用方法及注意事项
2017/06/12 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
python实现IOU计算案例
2020/04/12 Python
python redis存入字典序列化存储教程
2020/07/16 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
国际政治个人自荐信范文
2013/11/26 职场文书
大型活动策划方案
2014/01/12 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
庆祝儿童节标语
2014/10/09 职场文书
后备干部推荐材料
2014/12/24 职场文书
网吧员工管理制度
2015/08/05 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
七个非常实用的Python工具包总结
2021/06/15 Python
能用CSS实现的就不要麻烦JavaScript了
2021/10/05 HTML / CSS
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle