在项目中需要用到手机号的中间隐藏,这里的话可能有些非主流写法让自己的考虑不是那么全,于是在网上找了一份源码研究研究
这是需要的效果:
然后是函数:
<?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正式版现开放下载...
下一篇: 简易的身份证验证代码...