1

最近、非常に興味深い問題に出会いました。Web サイトに次のコードがあり、10 桁、ピリオド (.)、2 桁から 4 桁で構成される数値を生成します。また、gettext 関数を使用して、ページを他の 2 つの異なる言語に翻訳します。

<?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>

ここまでは順調ですね。がen_UK$langと等しい場合、必要なものが得られます (1234567891.1234)。

しかし、がit_ITまたはde_DE$langと等しい場合は、フォーマットを 10 桁に変更し、その後にCOMMAが続き、その後に 2 ~ 4 桁 (1234567891,1234) が続きます。$my_number

なぜこれが起こるのですか?どうもありがとう :)

4

1 に答える 1