在实际开发过程中,处理用户的敏感信息(如身份证号、手机号等)是非常重要的隐私保护环节。我们希望在展示这些信息时,能将部分敏感内容进行脱敏处理,避免泄露用户隐私。本文将介绍如何使用 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";