在处理中文或其他多字节字符的文本时,普通的字符串替换函数往往无法正确识别和处理双字节字符,尤其是在敏感词过滤的场景中。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;
?>
运行结果:
这是一段测试文本,包含敏感词汇:***和***。
多字节安全
mb_eregi_replace 是 mb_ereg_replace 的不区分大小写版本,专门处理多字节编码的字符串,避免普通正则表达式无法识别中文、日文等字符的问题。
字符编码设置
需要先调用 mb_internal_encoding("UTF-8") 或确保脚本默认编码为 UTF-8,保证多字节字符串函数的正常使用。
敏感词匹配
支持正则表达式,可以灵活定义敏感词规则,比如模糊匹配或者词干匹配。
如果敏感词较多,可以从数据库或文件中读取敏感词列表,然后循环替换。也可以结合用户输入过滤,实时进行敏感词替换,保障内容安全。