在處理中文或其他多字節字符的文本時,普通的字符串替換函數往往無法正確識別和處理雙字節字符,尤其是在敏感詞過濾的場景中。 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的不區分大小寫版本,專門處理多字節編碼的字符串,避免普通正則表達式無法識別中文、日文等字符的問題。
字符編碼設置<br> 需要先調用mb_internal_encoding("UTF-8")或確保腳本默認編碼為UTF-8,保證多字節字符串函數的正常使用
敏感詞匹配<br> 支持正則表達式,可以靈活定義敏感詞規則,比如模糊匹配或者詞幹匹配
如果敏感詞較多,可以從數據庫或文件中讀取敏感詞列表,然後循環替換。也可以結合用戶輸入過濾,實時進行敏感詞替換,保障內容安全。