如何将带有细小空格的数字格式化为千分隔符?
不显示格式为以下格式的数字:
1,234,567.890,我希望显示格式如下的数字:
1 234 567.890,与此略有不同:
1234 567.890。
我使用的是PHP函数:
number_format($value, 0, ".", " ")
但是,它会产生以下结果:
1�234�567.890
我已经将http头和html文档设置为UTF-8。我认为这个问题的出现是因为空间很小,是一个多字节字符。我找不到处理此问题的MB字符串函数。有谁知道如何处理这个问题吗?
解决方案
5.4.0该函数现在支持DEC_POINT和千_SEP中的多个字节。在旧版本中,仅使用每个分隔符的第一个字节。http://php.net/number_format
基于此,以下是对旧版PHP中该问题的一个非常老套的修复,不包括滚动您自己的number_format
实现:
$separator = ' ';
echo preg_replace('/(?<=d)x' . bin2hex($separator[0]) . '(?=d)/',
$separator,
number_format($value, 0, '.', $separator));
相关文章