我需要隐藏像2345 *** 47563 **** 3432这样的字符串部分。我使用PHP substr_replace,如下所示,但是我在想是否有更好的方法,而不是像我一样使用嵌套的substr_replace。
$mtn = 2348764756783432;
substr_replace(substr_replace($mtn, '***', 3,3 ), '***', 9, 3)
The result is 234***475***3432.
答案 0 :(得分:0)
你可以试试这个:
preg_replace('/(\d{3})(\d){3}/', '$1***', $mtn);
但我不确定这个是最容易阅读的。
而且,正如你所提到的,这个有另一个表现:
$mtn = 2348764756783432;
$time = microtime(true);
$result = substr_replace(substr_replace($mtn, '***', 3,3 ), '***', 9, 3);
printf('Result: %s, Spent time: %f %s', $result, microtime(true) - $time, PHP_EOL);
$time = microtime(true);
$result = preg_replace('/(\d{3})(\d){3}/', '$1***', $mtn);
printf('Result: %s, Spent time: %f %s', $result, microtime(true) - $time, PHP_EOL);
输出:
Result: 234***475***3432, Spent time: 0.000009
Result: 234***475***3432, Spent time: 0.000092