将字符串转换为浮点数,支持不同的语言环境(英语和法语)?

时间:2013-01-20 08:06:50

标签: php localization number-formatting

假设我有两种不同的符号,英语和法语

  

1,200.25 = english

     

1 200,25 =法语

是否有一个PHP函数可以接受任何2个数字并将它们转换为float?

  

1200.25 =浮动

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

$replacements = array("1,200.25","1 200,25");
foreach($replacements AS $replaceText):
    $replace = preg_replace("#^(.*)(?:\.|\,)([0-9]{1,})$#","$1.$2",$replaceText);
    $replaceChars = array("# #","#,#");
    $text = preg_replace($replaceChars, "", $replace);
    echo $replaceText. " got replaced by: ".$text."<br />";
endforeach;

答案 1 :(得分:0)

检查此代码:

<?php

function parse_float_locale($float_string, $locale) {
    $locale_info = array();
    switch ($locale) {
        case 'fr':
            $locale_info['thousands_sep'] = ' ';
            $locale_info['decimal_point'] = ',';
            break;
        case 'en':
        default:
            $locale_info['thousands_sep'] = ',';
            $locale_info['decimal_point'] = '.';
    }

    $float_string = str_replace($locale_info['thousands_sep'], '', $float_string);
    $float_string = str_replace($locale_info['decimal_point'], '.', $float_string);

    return floatval($float_string);
}

$str_en = '1,200.25';
$str_fr = '1 200,25';

$number_en = parse_float_locale($str_en, 'en');
$number_fr = parse_float_locale($str_fr, 'fr');

echo "Value en: $number_en";
echo "Value fr: $number_fr";

这将打印:

值en:1200.25

价值fr:1200.25

相关问题