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 GUID生成函数和类
Mar 10 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
php数组转成json格式的方法
Mar 09 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
Symfony控制层深入详解
Mar 17 PHP
php封装的单文件(图片)上传类完整实例
Oct 18 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
Apr 05 PHP
微信封装的调用微信签名包的类库
Jun 08 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP中$GLOBALS与global的区别详解
Mar 21 PHP
php框架知识点的整理和补充
Mar 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
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
seajs中模块依赖的加载处理实例分析
2017/10/10 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
2019/06/11 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python中tell()方法的使用详解
2015/05/24 Python
详解Python中的日志模块logging
2015/06/19 Python
json跨域调用python的方法详解
2017/01/11 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
Python Web静态服务器非堵塞模式实现方法示例
2019/11/21 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
小孩百日宴答谢词
2014/01/15 职场文书
产品开发计划书
2014/04/27 职场文书
2015年社会治安综合治理工作总结
2015/04/10 职场文书
电力工程合作意向书
2015/05/11 职场文书
解约证明模板
2015/06/19 职场文书
工作简报怎么写
2015/07/21 职场文书
springboot读取nacos配置文件
2022/05/20 Java/Android