【问题标题】:How to mask parts of a string with the asterisk character如何用星号字符屏蔽部分字符串
【发布时间】:2017-10-27 07:16:45
【问题描述】:

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

您的电话号码 ********8898 已发送验证码..

PHP

【问题讨论】:

标签: php laravel


【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 2011-12-03
        • 2013-06-27
        • 2012-02-20
        • 2014-09-07
        • 1970-01-01
        • 2017-09-17
        • 2017-12-15
        • 2016-12-06
        • 2023-03-18
        相关资源
        最近更新 更多