如何用星号字符屏蔽部分字符串

Ins*_*aka -6 php laravel

我想获得这种格式的电话号码

您的手机号********8898已发送验证码..

PHP

小智 7

如果电话号码长度超过4,那么你可以这样做:

substr_replace($number, str_repeat('*', strlen($number)-4), 0, -4);
Run Code Online (Sandbox Code Playgroud)

如果您还想显示第一位数字:

substr_replace($number, str_repeat('*', strlen($number)-5), 1, -4);
Run Code Online (Sandbox Code Playgroud)


Mak*_*Buk 5

如果你想屏蔽中间部分:

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);
}
Run Code Online (Sandbox Code Playgroud)

结果:

  • 1 => 1
  • 12 => 12
  • 123 => 1*3
  • 1234 => 1**4
  • 12345 => 1***5
  • 123456 => 12**56
  • 1234567 => 12***67
  • 12345678 => 12****78
  • ...