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 日期时间处理函数小结
Dec 18 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
php实现的双向队列类实例
Sep 24 PHP
ucenter通信原理分析
Jan 09 PHP
PHP转盘抽奖接口实例
Feb 09 PHP
PHP中的类型约束介绍
May 11 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
实例讲解PHP表单验证功能
Feb 15 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
PHP实现抽奖功能实例代码
Jun 30 PHP
php redis setnx分布式锁简单原理解析
Oct 23 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
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
JS字符串函数扩展代码
2011/09/13 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
手机端点击图片放大特效PhotoSwipe.js插件实现
2016/08/24 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
jQuery控制元素隐藏和显示
2017/03/03 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
关于微信小程序登录的那些事
2019/01/08 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
在Django的视图(View)外使用Session的方法
2015/07/23 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
TensorFlow搭建神经网络最佳实践
2018/03/09 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
详解django中Template语言
2020/02/22 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
工程力学硕士生的自我评价范文
2013/11/16 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
工作态度不好检讨书
2015/05/06 职场文书
同意报考证明
2015/06/17 职场文书
培训计划通知
2015/07/15 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL