Php 如何通过在每组三位数之间插入空格来格式化数字?

Php 如何通过在每组三位数之间插入空格来格式化数字?,php,Php,我使用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 有什么想法吗?你要找的 但这里还有一个正则表达式版本,因为为什么不呢 $rank = preg_replace('

我使用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

有什么想法吗?

你要找的

但这里还有一个正则表达式版本,因为为什么不呢

$rank = preg_replace('/(\d{1,3})(?=(\d{3})+$)/', '$1.', $alexa_rank_raw);
工作原理:它贪婪地匹配最多三个数字的组(尽可能多地匹配最多三个数字),但使用正向前瞻断言,从匹配组结束的位置到输入的结尾,有三个数字的精确倍数

您正在寻找的

但这里还有一个正则表达式版本,因为为什么不呢

$rank = preg_replace('/(\d{1,3})(?=(\d{3})+$)/', '$1.', $alexa_rank_raw);
工作原理:它贪婪地匹配最多三个数字的组(尽可能多地匹配最多三个数字),但使用正向前瞻断言,从匹配组结束的位置到输入的结尾,有三个数字的精确倍数


嗯…通过对
$alexa\U RAK\U raw
的反转运行上面相同的
preg\U replace
,然后反转结果?嗯…通过对
$alexa\U rank\U raw
的反转运行上面相同的
preg\U replace
,然后反转结果?您应该执行
数字格式($alexa_rank_raw,0,,,,,。);
因此没有添加0。您应该执行
number_格式($alexa_rank_raw,0,,,,,。);
而不是添加0。