如何使用PHP有效地替换不同位置的部分字符串?

时间:2017-03-05 05:27:23

标签: php replace

我需要隐藏像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. 

1 个答案:

答案 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