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 相关文章推荐
服务器端解压缩zip的脚本
Dec 22 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
Jul 22 PHP
php类中private属性继承问题分析
Nov 01 PHP
深入PHP数据缓存的使用说明
May 10 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
Aug 20 PHP
非常重要的php正则表达式详解
Jan 04 PHP
Yii全局函数用法示例
Jan 22 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
Apr 15 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
php实现记事本案例
Oct 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
第六节--访问属性和方法
2006/11/16 PHP
PHP+Ajax检测用户名或邮件注册时是否已经存在实例教程
2014/08/23 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
TP3.2框架分页相关实现方法分析
2020/06/03 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
JavaScript将相对地址转换为绝对地址示例代码
2013/07/19 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
微信小程序开发之Tabbar实例详解
2017/01/09 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
Python中的Descriptor描述符学习教程
2016/06/02 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
用python实现名片管理系统
2020/06/18 Python
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
军训自我鉴定
2013/12/14 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
英语教学课后反思
2016/02/15 职场文书
Filebeat 采集 Nginx 日志的方法
2021/03/31 Servers
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python