PHP将搜索后结果标题进行标红显示同时保持原标题字母大小写的方法
更新:2020-03-25 13:01:04
人气:1986
来源:本站原创
A+
在做李雷博客搜索功能时,想让用户检索关键词之后能在标题中标红色提示,同时又不影响原标题所显示的状态,就写了这个函数。用于替换标题中指定字符的颜色,同时兼顾了大多数以编程为主的网站经常出现大小写字母标题类的处理办法。
这个问题其实自己早就发现了,到今天闲下来了,才想起解决,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<strlen($keyword); $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 < $length; $iop++){ /* 李雷博客是以PHP编程为主,标题中经常会出现大小写字母的英文。 为了保持原标题的状态,保持标红着色同时还不能改变原标题中的大写或小写,需要将关键词替换两次处理 */ for($e=0;$e<mb_strlen($word[$iop]);$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("{##}","<span style='color:#FF0000;' >",$rstitle); //转换成特殊标记,标题不能含有特殊文字 $rstitle=str_replace("{@@}","</span>",$rstitle); return $rstitle; }else{ return $rstitle; } }
{#A#}和{@B@}只是做为模板替换的标记符号
函数调用方法:
<? $title=keywordlight($title_search,$rs["title"],'0'); ?>
推荐的文章
随手记
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
- ● Win10Mysql8初始密码丢失,初始化又不显示密码
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题