场景:展示手机号时,避免暴露隐私信息,因此需要给手机号加*号
代码
php
/**
* 手机号码隐私加星
* @param string $mobile 手机号
*/
function mobileToStar(string $mobile)
{
// 正则检测手机号
if(!preg_match('/^1[3456789]\d{9}$/',$mobile)){
// 手机格式错误
return false;
}
// 粗暴法
// $mobile[4] = "*";
// $mobile[5] = "*";
// $mobile[6] = "*";
// $mobile[7] = "*";
// return $mobile;
// 截取替换法
// $mobile_arr = str_split($mobile , 4); // 4个字符 1个字符串,切割 最后长度3
// $mobile_arr[1] = '****'; // 把中间4个用* 代替
// return implode($mobile_arr);
// 直接替换法
// return substr_replace($mobile , '****' , 4,4);
// 字符串截取法
$start_str = substr($mobile , 0 , 4);// 从0位开始截取,取4个字符
$in_str = str_pad('',4,'*'); // 设置 * 号
$end_str = substr($mobile , 8 , 4); // 结束部分 从第8位开始截取,取4个
return $start_str . $in_str. $end_str;
}
输出
php
var_dump(mobileToStar('13112346458'));
// string(11) "1311****458"