我有一个看起来像这样的输入
<input value="{{gameAccount.getAccountNumber() }}" disabled name="accountNumber" type="text">
显示:
123456789
但我希望它显示
*****6789
在这个特殊情况下使用gameAccount.getAccountNumber()
时,我感到很困惑substr($something?, 0, -4) . '****';
我该如何解决这个问题?提前谢谢
我还看到substr_replace()
功能......
答案 0 :(得分:3)
正如@ficuscr所指出的,这是一个更好的一个班轮:
$gameId = '123456789';
$gameId = str_repeat('*', strlen($gameId) - 4) . substr($gameId, -4);
可能有一种更优雅的方法可以做到这一点,但这可行:
$gameId = '123456789';
$gameIdLenToMask = strlen($gameId) - 4;
$mask = str_pad('', $gameIdLenToMask, '*');
$gameIdMasked = substr_replace($gameId, $mask, 0, $gameIdLenToMask);
// Prints: "*****6789"
var_dump($gameIdMasked);
有关详情,请参阅php.net上str_replace和str_pad的文档。
答案 1 :(得分:1)
另一个选项是,您可以使用长度减去4作为preg_replace的限制参数。
$new = preg_replace('/./', '*', $str, strlen($str) - 4);
如果你不确定你的字符串是否至少有四个字符,你可以使用max来确保限制不会消极。
$new = preg_replace('/./', '*', $str, max(0, strlen($str) - 4));