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出错界面
Oct 09 PHP
某大型网络公司应聘时的笔试题目附答案
Mar 27 PHP
优化PHP代码的53条建议
Mar 27 PHP
浅析php学习的路线图
Jul 10 PHP
php取整函数ceil,floo,round的用法及介绍
Aug 31 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
destoon复制新模块的方法
Jun 21 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
Apr 17 PHP
php正则表达式获取内容所有链接
Jul 24 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 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实现读取一个1G的文件大小
2013/08/24 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
Javascript 刷新全集常用代码
2009/11/22 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
JavaScript字符串删除重复字符的方法
2015/12/25 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
python 中split 和 strip的实例详解
2017/07/12 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
python中web框架的自定义创建
2019/09/08 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
30行Python代码实现高分辨率图像导航的方法
2020/05/22 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
会计人员岗位职责
2014/03/19 职场文书
个性婚礼策划方案
2014/05/17 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
给女朋友道歉的话大全
2015/01/20 职场文书
纪检监察立案决定书
2015/06/24 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python