我有一个系统,您可以在其中输入金额并计算一些内容并将其放入数据库中。
然而,我注意到的是多人进入不同的格式。
有些人进入: 3474,12832752 有些人进入: 3474.12832752< ---正确 然后有些人这样做: 3,747.12832752
现在我怎么会这样做两个格式不正确的格式呢?
以前,我刚刚这样做了“,”被替换为“。”解决第一个不正确的问题,但最近人们一直在做最后一个错误的问题,其中有数千人被分组。
我如何成功地将两个不正确的格式化为正确的格式?
答案 0 :(得分:2)
前面:
在控制器中:
答案 1 :(得分:2)
有两种方法:
答案 2 :(得分:1)
在前端,您可以使用一些jquery插件在发送之前验证/强制格式,请检查jQuery Inputmask.
如果您被迫格式化后端数据,您可以创建一个helper函数,如下所示:
function correctNumber($number){
return substr_replace(preg_replace('/[.,]/', '', $number), ".", 4, 0);
}
然后在您的控制器中,您可以通过正确的方式格式化数字:
echo correctNumber("3474,12832752");
//3474.12832752
echo correctNumber("3747.12832752");
//3474.12832752
答案 3 :(得分:1)
这些格式都不对。虽然第二个是用于写十进制数的标准美国标准,但许多欧洲国家和其他地方也使用逗号而不是点作为小数分隔符。因此,两种写作方式都是有效的。后者也是完全有效的,因为它是在纸上书写数字的标准方式。
因此,如果您没有明确且明确地通知您的用户数字条目应采用给定格式,则他们有权使用他们习惯使用的数字。
您在此处的选择是要明确只允许使用没有任何非数字字符的数值,除了用于分隔小数部分的点,或者设计一个转换这些不同文字的过程:
function format_number($value) {
$comma = strpos($value, ',');
$dot = strpos($value, '.');
if ($dot === false AND $comma !== false AND strrpos($value, ',') == $comma) {
$value = str_replace(',', '.', $value);
}
return str_replace(',', '', $value);
}
我检查了它,并为你的三个案件返回美国写作。