当前位置: 首页> 最新文章列表> 使用 mb_eregi_replace 做文本高亮标记(配合 <mark> 标签)

使用 mb_eregi_replace 做文本高亮标记(配合 <mark> 标签)

M66 2025-06-02

在 PHP 中处理多字节字符串时,常常需要进行不区分大小写的替换操作。mb_eregi_replace 是一个非常实用的函数,它可以用来实现不区分大小写的正则表达式替换,特别适合中文等多字节字符的处理。本文将介绍如何结合 mb_eregi_replace 函数和 HTML 的 <mark> 标签,为文本中的关键词添加高亮效果。


1. 什么是 mb_eregi_replace

mb_eregi_replace 是 PHP 的多字节字符串函数之一,作用是进行不区分大小写的正则替换。它的语法如下:

mb_eregi_replace(string $pattern, string $replacement, string $string, ?string $option = null): string
  • $pattern:要匹配的正则表达式(不区分大小写)

  • $replacement:替换的字符串

  • $string:被搜索的字符串

  • $option:可选参数,用于控制匹配行为

它支持多字节字符,适合中文、日文、韩文等语言的文本处理。


2. 用 <mark> 标签高亮关键词的原理

HTML5 的 <mark> 标签专门用来标记需要高亮显示的文本,浏览器默认用黄色背景来显示标记内容,非常适合做关键词高亮。

例如:

这是一个 <mark>高亮</mark> 的词语。

在页面中会显示“高亮”二字带有黄色背景。


3. 结合 mb_eregi_replace 实现关键词高亮的代码示例

下面是一个示例代码,演示如何使用 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> 标签包裹,从而实现高亮显示。


4. 注意事项

  • mb_eregi_replace 的匹配是不区分大小写的,适合需要模糊匹配关键词的场景。

  • 正则表达式中的关键词需要用管道符 | 分隔,表示“或”的关系。

  • 如果关键词中包含特殊字符,需要先进行转义,以免影响正则匹配。

  • 为确保多字节字符串处理正确,请确保 PHP 环境开启了 mbstring 扩展。


5. 结合实际 URL 示例

假设你有以下示例网页地址,需要替换其中某些关键词:

<?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> 标签给文本中的关键词加上高亮效果,提升内容的可读性和用户体验。