1

我使用 preg replace 通过在每组三位数之间插入一个空格来分隔数字:

$alexa_rank_raw = 8389876;

$alexa_rank = preg_replace("/(\d{3})/", '$1.', $alexa_rank_raw);

// alexa rank becomes: 838.987.6

如何进行替换,以便最终数字如下所示:

8.389.876

有任何想法吗?

4

1 回答 1

4

您正在寻找number_format.

$rank = number_format($alexa_rank_raw, 0, ",", ".");

但这里也是一个正则表达式版本,因为为什么不呢?

$rank = preg_replace('/(\d{1,3})(?=(\d{3})+$)/', '$1.', $alexa_rank_raw);

它是如何工作的:它贪婪地匹配最多三个数字的组(尽可能多到三个),但使用正向前瞻来断言从匹配组结束的位置开始有精确的三个数字的倍数直到输入结束。

看到它在行动

于 2013-01-17T23:20:13.073 回答