php number_format不使用locale

时间:2014-05-26 18:56:20

标签: php

对我来说这是第一次,使用setLocale,我通常讨厌使用它,因为我在共享主机上工作,但是自从最近更换工作以来,我已经获得了服务器控制,因此能够安装语言环境。

当我在我的应用程序上切换到fr_CA时,我打电话给

money_format('%n', $value)

它正确地格式化货币,但奇怪的是,如果我

number_format($value, 2);

我得到一个用正确的小数位(2)格式化的数字,但小数分隔符不是预期的。我得到" 0.32"而不是" 0,32"就像当地人说的那样。

我甚至检查了服务器上的语言环境,它清楚地显示小数点分隔符是逗号:

LC_NUMERIC
decimal_point             "<U002C>"
thousands_sep             "<U0020>"
grouping                  3;3
END LC_NUMERIC

我在网上查了一下,U002C是独立逗号...不是期间......

你对此有何看法?

PS,这是我检查的内容:

  1. setLocale确实返回fr_CA
  2. setLocale显然格式正确,我的代码没有覆盖对number_format的调用中的符号
  3. 由于

1 个答案:

答案 0 :(得分:1)

另一种方法是使用localeconv()检索该信息并在number_format()中使用它,例如:

$locale = localeconv(); 
echo number_format(
    $number, 
    $locale['frac_digits'], 
    $locale['decimal_point'], 
    $locale['thousands_sep']
);