当前位置: 首页> 最新文章列表> 如何使用mb_eregi_replace函数来替换文本中包含双字节字符的敏感词?

如何使用mb_eregi_replace函数来替换文本中包含双字节字符的敏感词?

M66 2025-06-11

在处理中文或其他多字节字符的文本时,普通的字符串替换函数往往无法正确识别和处理双字节字符,尤其是在敏感词过滤的场景中。PHP 中的 mb_eregi_replace 函数是多字节安全的正则替换函数,能够忽略大小写并正确处理多字节字符,非常适合用于替换文本中包含双字节字符的敏感词。

下面通过一个示例,演示如何使用 mb_eregi_replace 来替换文本中的敏感词。

<?php
// 设置内部字符编码为 UTF-8,确保多字节字符串函数正常工作
mb_internal_encoding("UTF-8");

// 原始文本,包含中文敏感词
$text = "这是一段测试文本,包含敏感词汇:敏感词和不良内容。";

// 敏感词列表(支持正则表达式模式)
$sensitiveWords = [
    "敏感词",
    "不良内容"
];

// 替换敏感词为***
foreach ($sensitiveWords as $word) {
    // 使用mb_eregi_replace进行不区分大小写的替换
    $text = mb_eregi_replace($word, "***", $text);
}

echo $text;
?>

运行结果:

这是一段测试文本,包含敏感词汇:***和***。

重点说明:

  1. 多字节安全
    mb_eregi_replacemb_ereg_replace 的不区分大小写版本,专门处理多字节编码的字符串,避免普通正则表达式无法识别中文、日文等字符的问题。

  2. 字符编码设置
    需要先调用 mb_internal_encoding("UTF-8") 或确保脚本默认编码为 UTF-8,保证多字节字符串函数的正常使用。

  3. 敏感词匹配
    支持正则表达式,可以灵活定义敏感词规则,比如模糊匹配或者词干匹配。

扩展应用

如果敏感词较多,可以从数据库或文件中读取敏感词列表,然后循环替换。也可以结合用户输入过滤,实时进行敏感词替换,保障内容安全。