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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
php中转义mysql语句的实现代码
Jun 24 PHP
php实现快速排序法函数代码
Aug 27 PHP
php下拉选项的批量操作的实现代码
Oct 14 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
PHP调用接口API封装的例子
Oct 11 PHP
php TP5框架生成二维码链接
Apr 01 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
php使用session二维数组实例
2014/11/06 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
JavaScript闭包_动力节点Java学院整理
2017/06/27 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
vue中监听返回键问题
2019/08/28 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python解析nginx日志文件
2015/05/11 Python
利用Python实现Windows下的鼠标键盘模拟的实例代码
2017/07/13 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
Python笔试面试题小结
2019/09/07 Python
Python 列表的清空方式
2020/01/13 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
毕业论文评语大全
2014/04/29 职场文书
加强作风建设工作总结
2014/10/23 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript
关于nginx 实现jira反向代理的问题
2021/09/25 Servers
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
Nginx开源可视化配置工具NginxConfig使用教程
2022/06/21 Servers