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 相关文章推荐
Views rows style模板重写代码
May 16 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
php使用curl打开https网站的方法
Jun 17 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
PHP Trait功能与用法实例分析
Jun 03 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
ThinkPHP 模板引擎使用详解
2017/05/07 PHP
js活用事件触发对象动作
2008/08/10 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
微信小程序webview 脚手架使用详解
2019/07/22 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
django foreignkey(外键)的实现
2019/07/29 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
基于plt.title无法显示中文的快速解决
2020/05/16 Python
Python实现EM算法实例代码
2020/10/04 Python
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
strstr()的简单实现
2013/09/26 面试题
Ejb技术面试题
2015/04/29 面试题
销售代表求职自荐信
2013/10/01 职场文书
入党积极分子思想汇报
2014/01/02 职场文书
30年同学聚会感言
2014/01/30 职场文书
调查研究项目计划书
2014/04/29 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
党员民主生活会材料
2014/12/15 职场文书
北京故宫导游词
2015/01/31 职场文书
《梅花魂》教学反思
2016/02/18 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS