替换输入值中除最后 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));