php做站内搜索并高亮显示关键字
如何使用php做站内搜索并高亮显示关键字?
代码如下 | 复制代码 |
<?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); } } ?> |
行删除文件夹的操作时,必须首先确保您有这个权限!
代码如下 | 复制代码 |
<?php function removeDir($dirName) |
第一步我们利用json_encode()函数把数据转换成json数据
代码如下 | 复制代码 |
<?php //php中用数组表示JSON格式数据 $arr = array( 'firstname' => iconv('gb2312', 'utf-8', '非诚'), 'lastname' => iconv('gb2312', 'utf-8', '勿扰'), 'contact' => array( 'email' =>'fcwr@111cn.net', 'website' =>'http://www.111cn.net', ) ); //将数组编码成JSON数据格式 $json_string = json_encode($arr); //JSON格式数据可直接输出 echo $json_string; ?> |
此转换函数只支持utf-8格式的如果中间有中文可以利用iconv或者mb转为UTF-8再进行json_encode,这样就不会有任何问题。
第二步,对数据进行解析我们也用一个php json处理函数json_decode()了,代码如下
代码如下 | 复制代码 |
<?php //php中用数组表示JSON格式数据 $arr = array( 'firstname' => iconv('gb2312', 'utf-8', '非诚'), 'lastname' => iconv('gb2312', 'utf-8', '勿扰'), 'contact' => array( 'email' =>'fcwr@111cn.net', 'website' =>'http://www.111cn.net', ) ); //将数组编码成JSON数据格式 $json_string = json_encode($arr); //将JSON格式数据进行解码,解码后不是JSON数据格式,不可用echo直接输出 $obj = json_decode($json_string); //强制转化为数组格式 $arr = (array) $obj; //按数组方式调用里面的数据 echo iconv('utf-8','gb2312',$arr['firstname']); echo '</br>'; //输出数组结构 print_r($arr); ?> |
好了实例就讲到了这里了关于
json_decode()参考 http://www.111cn.net/phper/18/32827.htm
json_encode()参考 http://www.111cn.net/phper/18/32827.htm
使用php让浏览器刷新需要解决几个问题
如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行
如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行
PHP定时执行的代码:
代码如下 | 复制代码 |
<?php //方法1--死循环 //方法2---sleep 定时执行 |
获取用户真实IP地址
代码如下 | 复制代码 |
function get_client_ip( ) |
判断是否为IP地址
代码如下 | 复制代码 |
|
相关文章
- 这篇文章主要介绍了C# 中的var关键字详细介绍的相关资料,需要的朋友可以参考下...2020-06-25
- yield这个关键字是和迭代器挂钩的,而且是与return一起以yield return的形式合用的,用来返回迭代器中的条目。...2020-06-25
- 这篇文章主要介绍了vue+高德地图实现地图搜索及点击定位操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-09
- 对于批量替换关键字的问题,仅替换而言没什么可说的,但这里需要的是每个关键字仅需要替换一次就可以了。查阅了php相关函数文档,发现php本身是没有函数实现这个功能的,所以不得不自己解决了。总结了几种可行方法,小记一下! (1...2015-10-30
- 这篇文章主要介绍了c# volatile 关键字的相关资料,帮助大家更好的理解和学习c#的相关知识,感兴趣的朋友可以了解下...2020-12-08
Spring Data JPA 关键字Exists的用法说明
这篇文章主要介绍了Spring Data JPA 关键字Exists的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-10- 我们这个做法是把搜索结果出来,与搜索关键词相同的替换成高亮的字, 我们会用到str_replace(你找的关键字,你找的关键字,$str); 就这么容易了,好了下面我们来看一...2016-11-25
- 这篇文章主要介绍了如何用python获取txt文件中关键字的数量,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...2020-12-24
- 用户为满足自己某种需求而来到搜索引擎的,判断用户的需求是做好网站的开始。只有准确地判断出用户需求,了解用户搜索的目的,才能合理地衡量出一个网站结果的质量好,做好搜...2016-10-10
- 猪先飞网之前分享过多篇关于帝国CMS当前栏目高亮的教程,点此查看 ,各有各的特点,各有各的优势,今天猪先飞网再分享一篇帝国CMS自定义导航栏目当前栏目高亮教程,于之前的不同处在...2015-12-30
- 这篇文章主要介绍了Java类的访问权限关键字用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-09-29
- 这篇文章主要介绍了Delphi常用关键字用法,包括了各个常用的关键字及其详细用法,需要的朋友可以参考下...2020-06-30
- php搜索csv中的数据原理是打开csv文件,然后一行行搜索指定的内容是否包含在我们读取这代码中,如果是返回true。 //搜索csv中指定内容 代码如下 复制代码...2016-11-25
- 这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25
代码块高亮可复制显示js插件highlight.js+clipboard.js整合
最近有个需求是将jsp页面上的某一段代码块格式化成类似CSDN的代码块的样式,而且很多平台都使用了这样的功能,下面就为大家简单分享一下...2021-02-17- 这篇文章主要介绍了pycharm 如何取消连按两下shift出现的全局搜索?下面小编就为大家介绍一下解决方法,还等什么?一起跟随小编过来看看吧...2021-01-16
- 这篇文章主要给大家介绍了关于Swift中static和class关键字的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-30
- 这篇文章主要介绍了Angular2搜索和重置按钮过场动画,需要的朋友可以参考下...2017-05-27
基于element-ui封装可搜索的懒加载tree组件的实现
这篇文章主要介绍了基于element-ui封装可搜索的懒加载tree组件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-05-23- 这篇文章主要介绍了C#中var关键字用法,实例分析了C#中var关键字的应用场合,对于.NET的学习具有一定参考价值,需要的朋友可以参考下...2020-06-25