【发布时间】:2015-08-17 16:13:31
【问题描述】:
我不能使用money_format 或NumberFormatter 类。
我让用户可以定义他们想要使用的小数分隔符 - 逗号或点。
// , or .
$decimal_separator = getUserDecimalSeparator();
现在,用户可以在input 字段中引入以下值:
1,200.10
1.500,21
1,50
1.35
1500.10
1900,21
我需要对这些值进行格式化以正确插入数据库。我在数据库中的字段是double(10,2)。
为了处理用户插入的值,我希望将它们转换为(始终使用点作为小数分隔符,并且没有千位分隔符):
1200.10
1500.21
1.50
1.35
1500.10
1900.21
所以我想到了一个可以帮助我转换值的函数。
function formatMoneyToDatabase($value, $separator)
{
$value = str_replace('.', ',', $value);
if($separator == ',')
return number_format($value, 2, '.', '');
return number_format($value, 2, ',', '');
}
但这不起作用有几个原因:
- 该值可能有两个、三个或更多分隔符(1.000.000,50 或 1,000,000.50)
- 我需要识别值的分隔符
- 我需要验证该值是否有任何十进制值
【问题讨论】:
-
1.使用正则表达式删除所有分隔符。 2.
number_format()使用用户指定的适当分隔符。
标签: php money-format