概述
上一篇文章介绍了“PHP屏蔽手机号部分位数”的一般做法。今儿再看看PHP如何屏蔽用户名称的部分字符。
应用效果图:
代码实现:
/**
* 名称字符串适用*号做部分隐藏
*/
function replace_str_hide($str){
$resplace_str = array('*', '**', '***', '****', '*****');
$str_len = mb_strlen($str,'UTF-8');
switch (true) {
case $str_len <= 2 && $str_len > 1://1-2用1个*号取代
return mb_substr($str, 0, -strlen($resplace_str[0])) . $resplace_str[0];
break;
case $str_len <= 4 && $str_len > 2://2-4用2个*号取代
return mb_substr($str, 0, -strlen($resplace_str[1])) . $resplace_str[1];
break;
case $str_len <= 6 && $str_len > 4://4-6用3个*号取代
return mb_substr($str, 0, -strlen($resplace_str[2])) . $resplace_str[2];
break;
case $str_len <= 8 && $str_len > 6://6-8用4个*号取代
return mb_substr($str, 0, -strlen($resplace_str[3])) . $resplace_str[3];
break;
case strlen($str) > 8://8以上用5个*号取代
return mb_substr($str, 0, -strlen($resplace_str[4])) . $resplace_str[4];
break;
default:
return $str;
break;
}
}
echo replace_str_hide('我是你的眼');
//输出的结果:我是***
这里用到的知识点 字符串的截取替换 和获取中文字符串的长度 。你可能会疑问为什么不和屏蔽手机号一样直接用substr_replace()处理。这里主要牵扯到php很多函数并没对中文字符的处理。中文不想英文字符一样,一个英文字符占一个字节,一个汉字字符占多个字节,具体占多少字节呢?要看你用的什么编码,UTF-8占3个字节,gbk占2个字节。substr_replace('$str','replace', start, length)中start和length是按照英文字符计算的,包括获取字符长度的strlen()。总之,牵扯到中文字符的计算都要注意你所使用的php内置方法是否兼容中文字符,防止计算字符不准或者出现截取乱码现象的产生。
最后
以上就是轻松老鼠为你收集整理的php 屏蔽字符串,PHP屏蔽用户名称的部分字符的全部内容,希望文章能够帮你解决php 屏蔽字符串,PHP屏蔽用户名称的部分字符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复