在 PHP 中处理多字节字符串时,常常需要进行不区分大小写的替换操作。mb_eregi_replace 是一个非常实用的函数,它可以用来实现不区分大小写的正则表达式替换,特别适合中文等多字节字符的处理。本文将介绍如何结合 mb_eregi_replace 函数和 HTML 的 <mark> 标签,为文本中的关键词添加高亮效果。
mb_eregi_replace 是 PHP 的多字节字符串函数之一,作用是进行不区分大小写的正则替换。它的语法如下:
mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $option = null): string
$pattern:要匹配的正则表达式(不区分大小写)
$replacement:替换的字符串
$string:被搜索的字符串
$option:可选参数,用于控制匹配行为
它支持多字节字符,适合中文、日文、韩文等语言的文本处理。
HTML5 的 <mark> 标签专门用来标记需要高亮显示的文本,浏览器默认用黄色背景来显示标记内容,非常适合做关键词高亮。
例如:
这是一个 <mark>高亮</mark> 的词语。
在页面中会显示“高亮”二字带有黄色背景。
下面是一个示例代码,演示如何使用 mb_eregi_replace 将指定关键词用 <mark> 标签包裹,实现高亮效果。
<?php
// 示例文本
$text = "PHP 是一门非常流行的服务器端脚本语言。PHP 支持多种编程范式。";
// 需要高亮的关键词(可以是多个,用|分隔)
$keywords = "php|服务器端";
// 构建正则表达式,使用括号捕获关键词本身,忽略大小写
$pattern = "(" . $keywords . ")";
// 使用 mb_eregi_replace 进行不区分大小写的替换,给关键词加上 <mark> 标签
$highlightedText = mb_eregi_replace(
$pattern,
"<mark>\\1</mark>",
$text
);
// 输出高亮后的文本
echo $highlightedText;
?>
运行结果示例:
<mark>PHP</mark> 是一门非常流行的<mark>服务器端</mark>脚本语言。<mark>PHP</mark> 支持多种编程范式。
这样,页面上关键词部分会被 <mark> 标签包裹,从而实现高亮显示。
mb_eregi_replace 的匹配是不区分大小写的,适合需要模糊匹配关键词的场景。
正则表达式中的关键词需要用管道符 | 分隔,表示“或”的关系。
如果关键词中包含特殊字符,需要先进行转义,以免影响正则匹配。
为确保多字节字符串处理正确,请确保 PHP 环境开启了 mbstring 扩展。
假设你有以下示例网页地址,需要替换其中某些关键词:
<?php
$text = "访问我们的官方网站 https://m66.net/ 了解更多信息。";
// 高亮 “m66.net”
$keywords = "m66\\.net";
$pattern = "(" . $keywords . ")";
$highlightedText = mb_eregi_replace(
$pattern,
"<mark>\\1</mark>",
$text
);
echo $highlightedText;
?>
执行后,“m66.net” 会被高亮显示。
通过以上介绍,你可以轻松利用 mb_eregi_replace 和 <mark> 标签给文本中的关键词加上高亮效果,提升内容的可读性和用户体验。