项目中经常需要公布一些用户的信息,比如抽奖结果展示,排行榜等。但是很多涉及到用户隐私,比如昵称,姓名,手机号等,这时候就要对用户敏感信息做处理,最常见的就是对手机号加星号处理。方法也非常简单,简单到我再写这篇之前都在考虑要不要发出来。不过还是简单分享一下,如果有兄弟用得上至少可以节省一点时间。
/**
* 字符串加指定符号处理
* @param string $str 源字符串
* @param int $start 开头保留长度
* @param int $end 结尾保留长度
* @param string $symbol 指定符号
* @param bool $fullSymbol 是否全处理成指定符号
* @return string
*/
function secretStr($str, $start = 1 ,$end = 1, $symbol = '*', $fullSymbol = false){
$str = trim($str);
$symbol = trim($symbol);
if (empty($str)){
return '';
}
if(empty($symbol)) $symbol = '*';
if($start < 0) $start = 1;
if($end < 0) $end = 1;
//mb_strlen — 输入字符串总长度
$strlen = mb_strlen($str, 'utf-8');
//要保留的开头和结尾的总长度
$numLen = $start + $end;
if($numLen >= $strlen){
return $str;
}
if ($fullSymbol) {
//如果全处理成指定符号
return str_repeat($symbol, $strlen);
} else {
//mb_substr — 获取要保留的开头和结尾字符
$firstStr = mb_substr($str, 0, $start, 'utf-8');
$lastStr = mb_substr($str, -1 * $end, $end, 'utf-8');
//str_repeat — 重复一个字符串
return $firstStr . str_repeat($symbol, $strlen - $numLen) . $lastStr;
}
}
当然了不单单可以处理手机号,其他字符串也是可以的。
echo secretStr('13800138000'); //1*********0
echo secretStr('13800138000',3,4); //138****8000
echo secretStr('13800138000',3,4,'#'); //138####8000
echo secretStr('13800138000',3,4,'*',true); //***********
echo secretStr('abcdef',1,2); //a***ef
echo secretStr('江南极客'); //江**客
————————————————
原文链接:https://blog.csdn.net/sinat_35861727/article/details/89851836
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询