答案:PHP通过preg_replace()函数结合正则表达式实现关键词高亮,使用preg_quote()转义特殊字符,'iu'修饰符支持不区分大小写和UTF-8,通过负向断言排除HTML标签内内容,避免重复替换与结构破坏,再用CSS定义.highlight样式完成前端突出显示。
在PHP中实现搜索关键词高亮,核心是将用户输入的关键词在显示内容中进行匹配,并用特定HTML标签包裹,再通过CSS设置样式突出显示。整个过程包括关键词提取、内容匹配替换和前端样式呈现三个部分。
使用PHP的字符串处理函数或正则表达式对目标文本中的关键词进行替换。推荐使用 preg_replace() 函数,支持不区分大小写匹配,并避免破坏原有HTML结构。
基本实现方式如下:
function highlightKeywords($text, $keywords) {
if (empty($keywords)) return $text;
// 转为数组,支持多个关键词
$words = is_array($keywords) ? $keywords : [$keywords];
foreach ($words as $word) {
if (trim($word) === '') continue;
// 使用正则表达式匹配关键词,添加标签包裹
$pattern = '/' . preg_quote($word, '/') . '/iu'; // i不区分大小写,u支持UTF-8
$replace = '$0';
$text = preg_replace($pattern, $replace, $text);
}
return $text;
}
说明:preg_quote() 防止关键词包含特殊正则字符;$0 表示匹配到的原内容;'iu'修饰符确保中文和大小写都能正确匹配。
直接替换可能导致已有的被再次处理,或误改页面中的HTML标签内关键词。可优化正则排除HTML标签内的内容:
function highlightKeywordsSafe($text, $keywords) {
$
words = is_array($keywords) ? $keywords : [$keywords];
foreach ($words as $word) {
if (trim($word) === '') continue;
$quoted = preg_quote($word, '/');
// 只匹配非HTML标签内的文本(简单方式:排除<...>中的内容)
$pattern = '/(?<=^|>)(' . $quoted . ')(?=<|$)/iu';
$text = preg_replace($pattern, '$1', $text);
}
return $text;
}
更严谨的做法可先用DOM解析跳过标签内容,但对一般场景,上述方式已足够。
配合CSS定义高亮样式,使关键词更醒目:
可根据设计需求调整背景色、字体、边框等。例如使用黄色背景+深色文字是常见高亮方案。
假设从GET参数获取关键词并在文章中高亮:
$article = "这是一篇关于PHP编程的文章,介绍了PHP的基本语法和高亮实现方法。"; $keyword = $_GET['q'] ?? ''; echo highlightKeywords($article, $keyword);
访问 page.php?q=PHP 后,页面中所有“PHP”都会被包裹并高亮显示。
基本上就这些。注意过滤空关键词、防止XSS(如关键词含脚本),生产环境建议结合htmlspecialchars()做安全处理。实现不复杂但容易忽略细节。
# css
# php
# word
# html
# 前端
# 正则表达式
# xss
# 字符串
# dom
# 关键词
# 这是
# 多个
# 都能
# 修饰符
# 推荐使用
# 并在
# 再用
# 但对
相关文章:
七夕网站制作视频,七夕大促活动怎么报名?
如何通过cPanel快速搭建网站?
如何在IIS7上新建站点并设置安全权限?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
建站之星安装失败:服务器环境不兼容?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
网站制作员失业,怎样查看自己网站的注册者?
Python如何创建带属性的XML节点
建站VPS推荐:2025年高性能服务器配置指南
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
建站主机CVM配置优化、SEO策略与性能提升指南
如何在万网自助建站中设置域名及备案?
微信小程序 五星评分(包括半颗星评分)实例代码
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
已有域名能否直接搭建网站?
如何选择香港主机高效搭建外贸独立站?
怎么将XML数据可视化 D3.js加载XML
建站之星如何优化SEO以实现高效排名?
建站OpenVZ教程与优化策略:配置指南与性能提升
利用JavaScript实现拖拽改变元素大小
哈尔滨网站建设策划,哈尔滨电工证查询网站?
如何解决VPS建站LNMP环境配置常见问题?
黑客如何通过漏洞一步步攻陷网站服务器?
金*站制作公司有哪些,金华教育集团官网?
如何挑选最适合建站的高性能VPS主机?
高端网站建设与定制开发一站式解决方案 中企动力
建站主机如何安装配置?新手必看操作指南
建站之星安装后如何自定义网站颜色与字体?
建站DNS解析失败?如何正确配置域名服务器?
制作旅游网站html,怎样注册旅游网站?
自助网站制作软件,个人如何自助建网站?
制作农业网站的软件,比较好的农业网站推荐一下?
简历在线制作网站免费版,如何创建个人简历?
如何通过智能用户系统一键生成高效建站方案?
高防服务器如何保障网站安全无虞?
如何通过.red域名打造高辨识度品牌网站?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
网页设计与网站制作内容,怎样注册网站?
建站主机空间推荐 高性价比配置与快速部署方案解析
建站之星导航如何优化提升用户体验?
建站主机默认首页配置指南:核心功能与访问路径优化
建站之星在线客服如何快速接入解答?
如何高效配置香港服务器实现快速建站?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
香港服务器网站卡顿?如何解决网络延迟与负载问题?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
*请认真填写需求信息,我们会在24小时内与您取得联系。