英語とフランス語の2つの異なる表記法でこれらの同様の数字があるとしましょう
1,200.25 = 英語
1 200,25 = フランス
2つの数値のいずれかを受け入れて浮動小数点数に変換できるPHP関数はありますか?
1200.25 = フロート
英語とフランス語の2つの異なる表記法でこれらの同様の数字があるとしましょう
1,200.25 = 英語
1 200,25 = フランス
2つの数値のいずれかを受け入れて浮動小数点数に変換できるPHP関数はありますか?
1200.25 = フロート
このコードを確認してください:
<?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
You could use something like this:
$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;