PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
有时候我们在开发中会遇到这样一种情况,例如:显示手机号我们需要将中间4位遮挡掉,一般使用“*”号代替,或是显示身份证号码是为了保护个人信息也同样需要遮挡掉4位,故可用到下列方式、代码进行实现:
核心代码
=$left?"*":$array[$i]; } $array=array_chunk(array_reverse($array),$right); $array=array_reverse($array[0]); for($i=0;$i<$right;$i++){ $tem[]=$array[$i]; } $string=implode("",$tem); } return$string; } $str='12345678901'; echohideStr($str,2,4);
有时候需要考虑中文的替换那么可以参考下面的实现方法
对于字符串某部分使用*号替换的问题:
1.实例:
$username="linshouyue";
echosubstr_replace($username,'****','3','4');
substr_replace()函数
1.1)第一参数为需处理的字符串
1.2)第二参数为使用的替换符号
1.3)第三/四参数为需要替换的字符串位置(从第三个字符开始替换后四位字符)
但是该函数对于英文字符/数字数没有任何问题得,但是一旦遇到汉字就会出现很尴尬的问题,因为汉字与英文字符的字节是不一样的,可以使用一下方法解决:
/** **替换中文汉字
*@author月月
*/
functionsubstr_cut($user_name){
$strlen =mb_strlen($user_name,'utf-8');
$firstStr =mb_substr($user_name,0,1,'utf-8');
$lastStr =mb_substr($user_name,-1,1,'utf-8');
return$strlen==2?$firstStr.str_repeat('*',mb_strlen($user_name,'utf-8')-1):$firstStr.str_repeat("*",$strlen-2).$lastStr;
}
好了,这篇文章就介绍到这了
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。