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 相关文章推荐
站长助手-网站web在线管理程序 v1.0 下载
May 12 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 PHP
一个简单的PHP验证码实现代码
May 10 PHP
PHP的魔术常量__METHOD__简介
Jul 08 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
列举PHP的Yii 2框架的开发优势
Jul 03 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 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中运用jQuery的Ajax跨域调用实现代码
2012/02/21 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
javascript编程实现栈的方法详解【经典数据结构】
2017/04/11 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python3 replace()函数使用方法
2018/03/19 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python元组常见操作示例
2019/02/19 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
Python可以用来做什么
2020/11/23 Python
python实现简单的学生管理系统
2021/02/22 Python
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
我的长征观后感
2015/06/09 职场文书
上甘岭观后感
2015/06/10 职场文书
浅析python中特殊文件和特殊函数
2022/02/24 Python
vue中data里面的数据相互使用方式
2022/06/05 Vue.js