最近、非常に興味深い問題に出会いました。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
なぜこれが起こるのですか?どうもありがとう :)