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缩略图生成程式(需要GD库支持)
Mar 06 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 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
php分页思路以及在ZF中的使用
2012/05/30 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
PHP new static 和 new self详解
2017/02/19 PHP
PHP分享图片的生成方法
2018/04/25 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
List the Stored Procedures in a SQL Server database
2007/06/20 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
vuex 项目结构目录及一些简单配置介绍
2018/04/08 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python入门篇之数字
2014/10/20 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
python 解压pkl文件的方法
2018/10/25 Python
python面向对象法实现图书管理系统
2019/04/19 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
中学生学雷锋演讲稿
2014/04/26 职场文书
个性婚礼策划方案
2014/05/17 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
2016年校长新年寄语
2015/08/17 职场文书
关于 Python json中load和loads区别
2021/11/07 Python
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技