如何用星号字符屏蔽部分字符串
Posted
技术标签:
【中文标题】如何用星号字符屏蔽部分字符串【英文标题】:How to mask parts of a string with the asterisk character 【发布时间】:2017-10-27 07:16:45 【问题描述】:我想获取这种格式的电话号码
您的电话号码 ********8898 已发送验证码..
【问题讨论】:
str_replace()
, substr()
和许多moooooore
你已经尝试了什么?
How To Replace Some Characters With Asterisks的可能重复
【参考方案1】:
试试这个
$phone_number = '******' . substr( $phone_number, - 4);
echo $phone_number;
【讨论】:
这个答案缺少教育解释。【参考方案2】:你可以使用 substr :
$my_text = '12345678';
echo substr($my_text, 1); // 2345678
【讨论】:
这不会掩盖任何东西,它会截断。【参考方案3】:*******echo substr("9876543210", 6, 4);
【讨论】:
【参考方案4】:如果你想掩盖中间部分:
private function stringToSecret(string $string = NULL)
if (!$string)
return NULL;
$length = strlen($string);
$visibleCount = (int) round($length / 4);
$hiddenCount = $length - ($visibleCount * 2);
return substr($string, 0, $visibleCount) . str_repeat('*', $hiddenCount) . substr($string, ($visibleCount * -1), $visibleCount);
结果:
1 => 1 12 => 12 123 => 1*3 1234 => 1**4 12345 => 1***5 123456 => 12**56 1234567 => 12***67 12345678 => 12****78 ...【讨论】:
【参考方案5】:如果电话号码长度大于4,那么你可以这样做:
substr_replace($number, str_repeat('*', strlen($number)-4), 0, -4);
如果你还想显示第一个数字:
substr_replace($number, str_repeat('*', strlen($number)-5), 1, -4);
【讨论】:
以上是关于如何用星号字符屏蔽部分字符串的主要内容,如果未能解决你的问题,请参考以下文章