前言
在php前端开发中,我们有时候需要将一个手机号码中的某一些位数用星号代替,这样可以保护客户的基本信息。本文章向大家介绍php手机号中间四位用星号*代替显示的实现方法,需要的码农可以参考一下。
方法一:substr字符串截取法
通过substr函数截取手机号码的前几位和后几位,中间用星号填充:
$mobile = '13912345678';
$newMobile1 = substr($mobile, 0, 5).'****'.substr($mobile, 9);
echo $newMobile1;
// 输出: 13912****5678
这种方法简单直接,substr($mobile, 0, 5)截取前5位,substr($mobile, 9)截取从第9位开始到末尾的部分,中间用4个星号填充。
方法二:substr_replace替换法
使用substr_replace函数直接替换手机号码中间的字符:
$mobile = '13912345678';
$newMobile2 = substr_replace($mobile, '****', 5, 4);
echo $newMobile2;
// 输出: 13912****5678
substr_replace函数参数说明:第一个参数是原字符串,第二个参数是替换字符串,第三个参数是开始替换的位置,第四个参数是替换的长度。这里从第5位开始,替换4个字符为星号。
方法三:preg_replace正则替换法
使用正则表达式匹配手机号格式,并用星号替换中间四位:
$mobile = '13912345678';
$newMobile3 = preg_replace('/(d{5})d{4}(d{2})/', '$1****$2', $mobile);
echo $newMobile3;
// 输出: 13912****5678
正则表达式说明:
(d{5})- 匹配前5位数字并捕获d{4}- 匹配中间4位数字(待替换部分)(d{2})- 匹配最后2位数字并捕获$1****$2- 替换为:前5位 + 4个星号 + 后2位
三种方法对比
| 方法 | 函数 | 优点 | 缺点 |
|---|---|---|---|
| 字符串截取法 | substr() | 简单易懂,性能较好 | 代码稍长 |
| 子串替换法 | substr_replace() | 代码简洁,一步完成 | 需要记住参数含义 |
| 正则替换法 | preg_replace() | 灵活强大,可扩展 | 正则稍复杂,性能略低 |
总结
以上三种方法都可以实现手机号中间四位用星号显示的效果。对于简单的需求,推荐使用substr_replace()方法,代码最简洁。如果需要更灵活的匹配规则(如固定位数、自定义显示位数等),正则表达式方法会更加方便。

发表评论 取消回复