How to format numbers with thin space as a thousand separator?

multibyte, number-formatting, php

Solution

5.4.0 This function now supports multiple bytes in dec_point and thousands_sep. Only the first byte of each separator was used in older versions.

http://php.net/number_format

Based on that, here's a very hacky fix for the problem in older PHP versions, short of rolling your own implementation of `number_format`:

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

Problem

Instead of displaying numbers formatted like this: 1,234,567.890, I want to display numbers formatted like this: 1 234 567.890, which is slightly different from this: 1 234 567.890. I am using the PHP function: ``` number_format($value, 0, ".", " ") ``` But, it produces this: 1�234�567.890 I have already set the http header and the html document to UTF-8. I believe this problem arises due to the thin space being a multi-byte character. I have not been able to find a mb string function that deals with this. Does anyone has an idea of how to deal with this problem?

Original source