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字符串函数.
有没有人知道如何处理这个问题?
5.4.0此函数现在支持dec_point和thousands_sep中的多个字节.在旧版本中仅使用每个分隔符的第一个字节.
基于此,这是一个非常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)