在项目中需要用到手机号的中间隐藏,这里的话可能有些非主流写法让自己的考虑不是那么全,于是在网上找了一份源码研究研究
这是需要的效果:

然后是函数:
<?php
/**
* 函数说明:隐藏中间的字段
* 传递参数:
* $string 手机号
* $strlen 隐藏字节
* 返回参数:
* $tmpstr 隐藏后的手机号
*/
function sub_right($string, $strlen = '50'){
$tmpstr = "";
//先把字符串减去3位
$lengs =strlen($string)-3;
//如果截取后的字符窜长度小于或者等于10位
if($lengs<=10)
$strlen=$lengs-4; //4个星号,所以这里减去4
for($i = 0; $i < strlen($string); $i++) {
//前4位处理
if($i<$strlen){
//ord() 函数返回字符串的首个字符的 ASCII 值。 0xa0是十六进制数,asc码一般大于这个值得就是汉字
if(ord(substr($string, $i, 1)) > 0xa0) {
//是汉字就截取2位
$tmpstr .= substr($string, $i, 2);
$i++;
} else
//不是汉字就截取1位
$tmpstr .= substr($string, $i, 1);
}else{
//满足4位之后 补足*
if($i < $lengs){
$tmpstr .="*";
}
}
}
$tmpstr .= substr($string,-3);
return $tmpstr;
}
// eg
$str="13098877149";
echo sub_right($str,3);
?>有更好的朋友请联系我,谢谢~
上一篇: PHP 7.0.0正式版现开放下载...
下一篇: 简易的身份证验证代码...