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 中执行排序与 MySQL 中排序
Apr 21 PHP
PHP SQLite类
May 07 PHP
php下统计用户在线时间的一种尝试
Aug 26 PHP
PHP小教程之实现双向链表
Jun 12 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
PHP 导出Excel示例分享
Aug 18 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
PHP仿微信多图片预览上传实例代码
Sep 13 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
PHP中CheckBox多选框上传失败的代码写法
Feb 13 PHP
laravel实现上传图片的两种方式小结
Oct 12 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 实现多服务器共享 SESSION 数据
2009/08/15 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
php接口技术实例详解
2016/12/07 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
2014/04/30 Javascript
JS使用oumousemove和oumouseout动态改变图片显示的方法
2015/03/31 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
2017/09/05 Javascript
Node.Js生成比特币地址代码解析
2018/04/21 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
使用TensorFlow实现SVM
2018/09/06 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
python3.6+django2.0+mysql搭建网站过程详解
2019/07/24 Python
Django之form组件自动校验数据实现
2020/01/14 Python
Python猜数字算法题详解
2020/03/01 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
经济信息管理专业大学生求职信
2013/09/27 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js