You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何替换字符串中跟在“- ”后的身份证号前5位或后4位

身份证号脱敏实现方案

适配身份证号固定出现在- 之后的场景,用正则匹配实现,不受字符串前置内容格式影响,比substr()方案兼容性更强。

实现代码(PHP)

1. 替换身份证号前5位

function maskIdFront($inputStr) {
    return preg_replace_callback('/- (.+)/', function($match) {
        $idCard = $match[1];
        $replaceLength = min(5, strlen($idCard));
        return '- ' . str_repeat('*', $replaceLength) . substr($idCard, 5);
    }, $inputStr);
}

// 测试示例
$string1 = "** GALLARDO SERGIO - 74276932M";
$result1 = maskIdFront($string1);
// 输出结果:** GALLARDO SERGIO - *****932M

2. 替换身份证号后4位

function maskIdBack($inputStr) {
    return preg_replace_callback('/- (.+)/', function($match) {
        $idCard = $match[1];
        $idLength = strlen($idCard);
        $replaceLength = min(4, $idLength);
        return '- ' . substr($idCard, 0, $idLength - $replaceLength) . str_repeat('*', $replaceLength);
    }, $inputStr);
}

// 测试示例
$string2 = "** MONTOLIA ANTONIO - 74736619E";
$result2 = maskIdBack($string2);
// 输出结果:** MONTOLIA ANTONIO - 74736****

优化建议

如果你的身份证号有明确的格式规则(比如仅包含数字和大写字母,长度固定8-10位),可以把正则中的.+替换为[A-Z0-9]{8,10},进一步降低误匹配概率,适配更复杂的字符串场景。

内容的提问来源于stack exchange,提问作者Jesus91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:00:03