2

嗨,我对格式化金额有疑问。
在我的输入表单上,用户可以添加和编辑格式化的金额。由于这是一个多语言程序,用户可以指定自己的格式,所以没有固定的模式。
例子:

250.000
250,000
250.000,00  
250,000.00

可悲的是,在将它们存储到数据库之前,我必须“取消格式化”它们,否则 MySQL 会将我的数字理解为浮点数,反之亦然。

我该如何克服呢?有任何想法吗?

4

4 回答 4

0

您可以选择允许用户输入他们想要的内容,在这种情况下,您必须进行清理(并在十进制符号的情况下进行翻译),正如您在此处猜测的那样。或者您可以限制他们输入的内容并强制他们省略千位分隔符。

于 2012-05-21T16:59:17.133 回答
0
  1. 您将不得不检查客户端的本地化并相应地以这种方式解析数据。因为 2,500.00 = 2.500,00。这取决于位置。
  2. 不要让用户输入“,”。
  3. 有一个单独的框让用户输入小数点后的内容。
  4. 让该框预填充 0.00。告诉用户这是格式。
于 2012-05-21T17:07:31.313 回答
0
  • 以正确的格式从用户那里获取输入是一个好方法,在输入区域附近放置一条可查看的格式消息。
  • 您应该在用户执行提交时验证输入数据。
  • 在将用户输入直接存储到数据库之前,您可以在 JavaScript 和服务器端编程语言中使用正则表达式进行验证。
于 2012-05-21T17:20:07.953 回答
0

好的,我终于成功了,所以我将分享我的解决方案
首先,我使用Mootools在用户输入时格式化输入字段。
然后我移动了服务器端。

格式选项保存在我的应用程序中,所以这是代码

//get decimal separator from saved params
$dec = $params->get('decimalSep', '.');
//remove any char that's not a number or decimal separator 
//(i don't care about thousands sep)
$regex = '#[^0-9-'.preg_quote($dec).']#';

$normalized = preg_replace($regex, '', $price);
$normalized = str_replace($dec, '.', $normalized);

基本上我去掉了除小数点分隔符之外的所有内容,然后用标准分隔符 ( .) 替换它。

它就像一个魅力。

于 2012-05-22T10:52:01.770 回答