php查询关键字标红,PHP将搜索后结果标题进行标红显示同时保持原标题字母大小写的方法...

在做李雷博客搜索功能时,想让用户检索关键词之后能在标题中标红色提示,同时又不影响原标题所显示的状态,就写了这个函数。用于替换标题中指定字符的颜色,同时兼顾了大多数以编程为主的网站经常出现大小写字母标题类的处理办法。

这个问题其实自己早就发现了,到今天闲下来了,才想起解决,PHP代码共享了。function keywordlight($keyword,$rstitle,$jingdu){//关键词加亮 jingdu =0 开启模糊,其余任何值为精确,但必须有初始值

//keywordlight($title_search,clear_all($rs["title"]),'0');

$rstitle=htmlspecialchars_decode($rstitle);//将被转义的字符转回HTML实体

if ($keyword!==''){

if ($jingdu=='0'){//开启模糊查询,利用区位码单字分隔

$str_qwm = '';

for($i=0; $i

$str_c=(@ord($keyword[$i])>0xa0?substr($keyword, $i++, 2):substr($keyword, $i, 1));//将字以空格断开

$str_qwm = $str_qwm.$str_c." ";

}

$keyword=$str_qwm;

}

$word = explode(' ',$keyword);

$length = count($word);

for($iop = 0; $iop 

/*

李雷博客是以PHP编程为主,标题中经常会出现大小写字母的英文。

为了保持原标题的状态,保持标红着色同时还不能改变原标题中的大写或小写,需要将关键词替换两次处理

*/

for($e=0;$e

$mubiao=mb_substr($word[$iop],$e,1,'GBK');//mb_strlen和mb_substr主要解决中文截取乱码的问题

//$mubiao=$word[$iop];

$rstitle=str_replace(strtoupper($mubiao),"{##}".strtoupper($mubiao)."{@@}",$rstitle);//大写字母替换一遍

$rstitle=str_replace(strtolower($mubiao),"{##}".strtolower($mubiao)."{@@}",$rstitle);//小写字母再替换一遍

}

}

$rstitle=str_replace("{##}","",$rstitle); //转换成特殊标记,标题不能含有特殊文字

$rstitle=str_replace("{@@}","",$rstitle);

return $rstitle;

}else{

return $rstitle;

}

}

{#A#}和{@B@}只是做为模板替换的标记符号

函数调用方法:

$title=keywordlight($title_search,$rs["title"],'0');

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值