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调用数据库的存贮过程
Oct 09 PHP
文件系统基本操作类
Nov 23 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
Aug 15 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
php中switch语句用法详解
Aug 17 PHP
两款万能的php分页类
Nov 12 PHP
php使用get_class_methods()函数获取分类的方法
Jul 20 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
PHP实现 APP端微信支付功能
Jun 22 PHP
Swoole实现异步投递task任务案例详解
Apr 02 PHP
laravel 获取当前url的别名方法
Oct 11 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 xml文件操作代码(一)
2009/03/20 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
JQuery live函数
2010/12/24 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
Javascript中replace()小结
2015/09/30 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
JS组件Bootstrap Select2使用方法详解
2020/04/17 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
Python实现文件按照日期命名的方法
2015/07/09 Python
Python实现简单字典树的方法
2016/04/29 Python
利用Python批量识别电子账单数据的方法
2021/02/08 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
教师自荐书
2013/10/08 职场文书
物业门卫岗位职责
2013/12/28 职场文书
银行见习期自我鉴定
2014/01/29 职场文书
节约能源标语
2014/06/17 职场文书
大学生学习计划书
2014/09/15 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
故宫英文导游词
2015/01/31 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
导游词之任弼时故居
2020/01/07 职场文书
Golang bufio详细讲解
2022/04/21 Golang