當前位置: 首頁> 最新文章列表> 如何用mb_eregi_replace 實現一鍵脫敏處理身份證號、手機號等敏感信息?

如何用mb_eregi_replace 實現一鍵脫敏處理身份證號、手機號等敏感信息?

M66 2025-06-29

在實際開發過程中,處理用戶的敏感信息(如身份證號、手機號等)是非常重要的隱私保護環節。我們希望在展示這些信息時,能將部分敏感內容進行脫敏處理,避免洩露用戶隱私。本文將介紹如何使用PHP 中的mb_eregi_replace函數來實現一鍵脫敏處理。


什麼是mb_eregi_replace

mb_eregi_replace是PHP 的一個多字節字符串函數,用於在字符串中進行不區分大小寫的正則表達式替換。它支持UTF-8 等多字節編碼,非常適合處理中文等多字節字符的場景。


脫敏的基本思路

以手機號和身份證號為例,脫敏的常用方法是:

  • 手機號:隱藏中間四位,例如13812345678 脫敏為138****5678

  • 身份證號:隱藏中間10 位,例如110105199001011234 脫敏為1101**********1234


示例代碼

下面是用mb_eregi_replace實現脫敏的PHP 代碼示例:

 <?php
// 脫敏手機號
function mask_mobile($mobile) {
    // 匹配手機號格式,替換中間4位為****
    return mb_eregi_replace('(\d{3})\d{4}(\d{4})', '$1****$2', $mobile);
}

// 脫敏身份證號
function mask_idcard($idcard) {
    // 匹配身份證號,替換中間10位為**********
    return mb_eregi_replace('(\d{4})\d{10}(\d{4})', '$1**********$2', $idcard);
}

// 測試
$mobile = '13812345678';
$idcard = '110105199001011234';

echo "原手機號:$mobile\n";
echo "脫敏手機號:" . mask_mobile($mobile) . "\n";

echo "原身份證號:$idcard\n";
echo "脫敏身份證號:" . mask_idcard($idcard) . "\n";
?>

說明

  • 正則表達式中的(\d{3})(\d{4})表示捕獲前後的數字分組。

  • 替換部分用$1$2來引用捕獲組,從而保留首尾數字,中間替換成*

  • mb_eregi_replace不區分大小寫,且支持多字節字符,適合處理多種編碼的文本。


進一步優化

根據業務需求,也可以對郵箱、銀行卡號等其他敏感信息進行類似處理,只需調整正則表達式即可。


參考示例鏈接

更多PHP 字符串處理技巧,可以訪問以下資源:

 $url = 'https://m66.net/php-string-functions.html';
echo "詳細教程請訪問:$url";