4

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

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

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

我正在使用 PHP 函数:

number_format($value, 0, ".", " ")

但是,它产生了这个:

1�234�567.890

我已经将 http 标头和 html 文档设置为 UTF-8。我相信这个问题的出现是由于薄空间是一个多字节字符。我一直无法找到处理此问题的 mb 字符串函数。

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

4

2 回答 2

6

5.4.0 此函数现在支持 dec_point 和数千个字节中的多个字节。在旧版本中只使用了每个分隔符的第一个字节。

http://php.net/number_format

基于此,对于旧 PHP 版本中的问题,这是一个非常 hacky 的解决方案,没有滚动您自己的实现number_format

$separator = ' ';
echo preg_replace('/(?<=\d)\x' . bin2hex($separator[0]) . '(?=\d)/',
                  $separator,
                  number_format($value, 0, '.', $separator));
于 2012-12-07T10:52:17.457 回答
0

在较新 (>5.4.0) 的 PHP 版本中,只需直接使用细空格作为分隔符,如下所示:

number_format($value, 0, ".", "&thinsp;");
于 2020-08-11T08:46:53.513 回答