PHP数字分隔符,setlocale

时间:2013-05-28 17:52:28

标签: php locale setlocale

我最近遇到了一个非常有趣的问题。我在网站上有以下代码,用于生成由10位数字组成的数字,后跟句点(。),后跟2到4位数字。我还使用gettext函数将页面翻译成另外两种不同的语言

<?php
      $lang = "en_UK";
      putenv("LC_ALL=$lang");
      setlocale(LC_ALL, $lang);
      bindtextdomain("messages", "locale");
      bind_textdomain_codeset('messages', 'UTF-8');
      textdomain("messages");

      list($usec, $sec) = explode(" ",microtime());
      $my_number = ((float)$usec + (float)$sec + (float)rand(1, 100000000));
?>
      <form method ="POST" action="">
          <input type="hidden" value="<?php echo $my_number; ?>"/>
          <input type="submit"/>
      </form>

到目前为止一切顺利。当$lang等于 en_UK 时,我得到了我需要的东西(1234567891.1234)。

但如果$lang等于 it_IT de_DE ,则$my_number会将格式更改为10位数,然后是 COMMA ,后跟2到4位数字(1234567891,1234)。

现在有人为什么会这样? 非常感谢:)

1 个答案:

答案 0 :(得分:1)

不同的国家/地区对如何编写数字有不同的约定。 setlocale更改了程序使用的约定。