4

次のように書式設定された数値を表示する代わりに:

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 と千の 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));
于 2012-12-07T10:52:17.457 に答える