替换输入值

时间:2016-04-01 19:59:43

标签: php substring substr

我有一个看起来像这样的输入

<input value="{{gameAccount.getAccountNumber() }}" disabled name="accountNumber" type="text">

显示:

123456789

但我希望它显示

*****6789

在这个特殊情况下使用gameAccount.getAccountNumber()

时,我感到很困惑
substr($something?, 0, -4) . '****';

我该如何解决这个问题?提前谢谢

我还看到substr_replace()功能......

2 个答案:

答案 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_replacestr_pad的文档。

答案 1 :(得分:1)

另一个选项是,您可以使用长度减去4作为preg_replace的限制参数。

$new = preg_replace('/./', '*', $str, strlen($str) - 4);

如果你不确定你的字符串是否至少有四个字符,你可以使用max来确保限制不会消极。

$new = preg_replace('/./', '*', $str, max(0, strlen($str) - 4));