如何实现查寻关键词的高亮显示

查寻功能是每个网站都有的基本功能,最简单的实现方法当然就是使用SQL的like操作符来匹配用户输入的关键字。

以一个简单的CMS系统举例,检索栏位可能包括有Title(主题)和Content(内容),具体的SQL语句撰写如下:

   1. SELECT * FROM cms WHERE title LIKE '%{$name}%' OR content LIKE '%{$name}%')";  

SELECT * FROM cms WHERE title LIKE '%{$name}%' OR content LIKE '%{$name}%')";

SQL语句中%xxx%可以检索出任何包含xxx的字符串的主题或内容作为符合条件的资料。如xxx为test,那么test、contest、testable等等都是符合的结果。

现在我们就已经完成了一半的功能,接着如何实现高亮显示呢?其实其中最复杂的是如何做到英文的整词选择,最简单方法当然是使用正则表达式来进行替换。PHP代码撰写如下:

   1. $content = preg_replace("//b(/w*$highlight/w*)/b/",   
   2. "<spanstyle=/"background-color:#369;/">$1</span>" ,   
   3. $content);  

$content = preg_replace("//b(/w*$highlight/w*)/b/", "<spanstyle=/"background-color:#369;/">$1</span>" , $content);

其中正则表达式:/b(/w*test/w*)/b,/b就是来定位整词的,/w代表任意的ascii字符。如需考虑一些符号的情况,如“-”,只需要把/w修改成[/w-]即可。通过以上的正则表达式,我们就可以高亮显示以下的字符串中的关键字了,其中搜索的关键字为test。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值