替换输入值中除最后 4 个以外的所有 x 个数字
replacing all x numbers except last 4 within input value
我有一个看起来像这样的输入
<input value="{{gameAccount.getAccountNumber() }}" disabled name="accountNumber" type="text">
其中显示:
123456789
但我想让它显示
*****6789
在这种特殊情况下,当它处于输入值时我感到困惑 gameAccount.getAccountNumber()
substr($something?, 0, -4) . '****';
我该怎么做?提前致谢
我也看到了substr_replace()
函数...
正如@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 and str_pad 的文档。
另一个选项,您可以使用长度减去四作为 preg_replace 的限制参数。
$new = preg_replace('/./', '*', $str, strlen($str) - 4);
如果您不确定您的字符串是否至少包含四个字符,您可以使用 max 来确保限制不会变为负数。
$new = preg_replace('/./', '*', $str, max(0, strlen($str) - 4));
我有一个看起来像这样的输入
<input value="{{gameAccount.getAccountNumber() }}" disabled name="accountNumber" type="text">
其中显示:
123456789
但我想让它显示
*****6789
在这种特殊情况下,当它处于输入值时我感到困惑 gameAccount.getAccountNumber()
substr($something?, 0, -4) . '****';
我该怎么做?提前致谢
我也看到了substr_replace()
函数...
正如@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 and str_pad 的文档。
另一个选项,您可以使用长度减去四作为 preg_replace 的限制参数。
$new = preg_replace('/./', '*', $str, strlen($str) - 4);
如果您不确定您的字符串是否至少包含四个字符,您可以使用 max 来确保限制不会变为负数。
$new = preg_replace('/./', '*', $str, max(0, strlen($str) - 4));