PHP隐藏部分字符串

pek*_*eke 3 php string replace

我正在寻找 PHP 中隐藏字符串(例如用户名)的最优雅方式。

例如,用户名应显示为:

tim   will be shown as: t*m
Run Code Online (Sandbox Code Playgroud)

所以用户名本身并不完全“神秘”,但没有人能猜到他们的登录名,或者至少不能肯定。

Osa*_*yed 6

您可以使用preg_replace

$string = 'usernameTest';
echo preg_replace("/(?!^).(?!$)/", "*", $string); // u**********t
Run Code Online (Sandbox Code Playgroud)
  • (?!^) 检查字符是否不是字符串中的第一个字符。
  • . 匹配任何字符
  • (?!$) 检查字符是否不是字符串中的最后一个字符。

希望这可以帮助。


Jay*_*oda 1

尝试:

function get_starred($str) {
    $len = strlen($str);
    return substr($str, 0, 1).str_repeat('*', $len - 2).substr($str, $len - 1, 1);
}


$myStr = 'YourName';
echo get_starred($myStr); //should show Y******e 
Run Code Online (Sandbox Code Playgroud)