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