如何将具有稀疏空间的数字格式化为千位分隔符?

Que*_*low 4 php multibyte number-formatting

而不是显示如下格式的数字:

1,234,567.890,我想显示如下格式的数字:

1 234 567.890,与此略有不同:
1 234 567.890.

我正在使用PHP函数:

number_format($value, 0, ".", "?")
Run Code Online (Sandbox Code Playgroud)

但是,它产生了这个:

1234567.890

我已经将http标头和html文档设置为UTF-8.我认为这个问题是由于瘦空间是一个多字节字符而产生的.我无法找到一个处理此问题的mb字符串函数.

有没有人知道如何处理这个问题?

dec*_*eze 5

5.4.0此函数现在支持dec_point和thousands_sep中的多个字节.在旧版本中仅使用每个分隔符的第一个字节.

http://php.net/number_format

基于此,这是一个非常hacky修复旧版本PHP中的问题,而不是滚动自己的实现number_format:

$separator = '?';
echo preg_replace('/(?<=\d)\x' . bin2hex($separator[0]) . '(?=\d)/',
                  $separator,
                  number_format($value, 0, '.', $separator));
Run Code Online (Sandbox Code Playgroud)