當前位置: 首頁> 最新文章列表> 如何使用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. 字符編碼設置<br> 需要先調用mb_internal_encoding("UTF-8")或確保腳本默認編碼為UTF-8,保證多字節字符串函數的正常使用

  3. 敏感詞匹配<br> 支持正則表達式,可以靈活定義敏感詞規則,比如模糊匹配或者詞幹匹配

擴展應用

如果敏感詞較多,可以從數據庫或文件中讀取敏感詞列表,然後循環替換。也可以結合用戶輸入過濾,實時進行敏感詞替換,保障內容安全。