帝国CMS您现在的位置是:首页 > 博客日志 > 帝国CMS

帝国CMS 实现搜索结果关键字高亮的方法

<a href='mailto:'>微wx笑</a>的头像微wx笑2019-08-07 14:27:49帝国CMS人已围观关键字:帝国cms,正则

简介没有哪个搜索引擎不实现搜索结果关键字高亮的,那样的话用户体验会很差;然而就这样重要的一个功能,帝国CMS默认却没有实现!具体原因不知道,可能有其商业目的,但这让帝国CMS在我心中的感觉,就差了很多。

帝国CMS 实现搜索结果关键字高亮的方法,我所使用的版本是:7.5vWk编程技术_踩坑日志_进阶指南 - 无知人生

没有哪个搜索引擎不实现搜索结果关键字高亮的,那样的话用户体验会很差;然而就这样重要的一个功能,帝国CMS默认却没有实现!具体原因不知道,可能有其商业目的,但这让帝国CMS在我心中的感觉,就差了很多。vWk编程技术_踩坑日志_进阶指南 - 无知人生


vWk编程技术_踩坑日志_进阶指南 - 无知人生

实现方法:

修改e/search/result/index.php,在大约109行(这个文件可能被我修改过)找到如下代码:vWk编程技术_踩坑日志_进阶指南 - 无知人生

$listtext=str_replace("<!--list.var".$changerow."-->",$repvar,$listtext);

然后在这行下面添加一行代码,目的是进行关键词的替换:
vWk编程技术_踩坑日志_进阶指南 - 无知人生

$listtext=str_replace($search_r[keyboard],"<font color='red'>$search_r[keyboard]</font>",$listtext);

保存,即可实现关键字描红的高亮显示效果!vWk编程技术_踩坑日志_进阶指南 - 无知人生

测试效果如下图所示:vWk编程技术_踩坑日志_进阶指南 - 无知人生

image.pngvWk编程技术_踩坑日志_进阶指南 - 无知人生

你会发现一个问题,存在大小写敏感的问题,有的没有被替换,为了解决这个问题,我们需要使用以下代码:vWk编程技术_踩坑日志_进阶指南 - 无知人生

$listtext=str_ireplace($search_r[keyboard],"<font color='red'>$search_r[keyboard]</font>",$listtext);

str_ireplace 是 str_replace 的忽略大小写版本vWk编程技术_踩坑日志_进阶指南 - 无知人生

定义和用法

str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。vWk编程技术_踩坑日志_进阶指南 - 无知人生

该函数必须遵循下列规则:vWk编程技术_踩坑日志_进阶指南 - 无知人生

  • 如果搜索的字符串是一个数组,那么它将返回一个数组。vWk编程技术_踩坑日志_进阶指南 - 无知人生

  • 如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。vWk编程技术_踩坑日志_进阶指南 - 无知人生

  • 如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换vWk编程技术_踩坑日志_进阶指南 - 无知人生

  • 如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。vWk编程技术_踩坑日志_进阶指南 - 无知人生

注释:该函数不区分大小写。请使用 str_replace() 函数来执行区分大小写的搜索。vWk编程技术_踩坑日志_进阶指南 - 无知人生

注释:该函数是二进制安全的。vWk编程技术_踩坑日志_进阶指南 - 无知人生

语法

str_ireplace(find,replace,string,count)
参数描述
find必需。规定要查找的值。
replace必需。规定替换 find 中的值的值。
string必需。规定被搜索的字符串。
count可选。一个变量,对替换数进行计数。

详情请参考:https://www.w3school.com.cn/php/func_string_str_ireplace.aspvWk编程技术_踩坑日志_进阶指南 - 无知人生


vWk编程技术_踩坑日志_进阶指南 - 无知人生

但这依然存在一个问题,就是本来大写的,替换后变成了小写的。vWk编程技术_踩坑日志_进阶指南 - 无知人生

如果要解决这个问题,就要使用正则表达式了,代码如下:vWk编程技术_踩坑日志_进阶指南 - 无知人生

if (0 != strlen($search_r[keyboard])){
        $listtext=preg_replace("/".preg_quote($search_r[keyboard], "/")."/i","<font color='red'>$0</font>",$listtext);
    }

关于正则表达式的使用,请参考:https://www.runoob.com/php/php-pcre.htmlvWk编程技术_踩坑日志_进阶指南 - 无知人生

本文由 微wx笑 创作,采用 CC BY-NC 4.0 许可协议。 非商业性使用可自由转载、引用、甚至修改,但需署名作者且注明出处。

很赞哦! () 有话说 ()

站点信息

  • 建站时间:2018-10-24
  • 服务期限阿里云ECS 2027年到期
  • 主题模板:基于《今夕何夕》修改
  • 文章统计:210篇
  • 文章评论:15条
  • 文章阅读:2818次
  • 文章点赞:1026次
  • 微信公众号:扫描二维码,关注我们
  • 二维码-微信公众号-微wx笑