Недавно я столкнулся с очень интригующей проблемой. У меня есть следующий код на веб-сайте, чтобы сгенерировать число, состоящее из 10 цифр, за которым следует период (.), За которым следует от 2 до 4 цифр. Я также использую функцию gettext для перевода страницы на 2 других разных языка.PHP-цифровой разделитель, setlocale
<?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
равно ru_UK, я получаю то, в чем я нуждаюсь (1234567891.1234).
Но если $lang
равно it_IT или de_DE, то $my_number
меняет формат до 10 цифр, а затем COMMA, с последующим 2-х до 4 цифр (1234567891,1234).
Кто-нибудь теперь, почему это происходит ??? Спасибо большое :)
Ну, это все объясняет. Большое спасибо!!!! Насколько вам известно ... есть ли способ избежать этого конкретного поведения, не сходя с ума? :) – iosononando
@iosononando: Вам может потребоваться найти или задать другой вопрос. Я не работаю на PHP и не могу посоветовать использовать несколько локалей в PHP. –
Достаточно справедливо Эрик. На этот раз я рассмотрю проблему. Еще раз спасибо! – iosononando