2012-05-21 26 views
2

嗨我有一個格式化數量的問題。
在我的輸入表單上,用戶可以添加和編輯格式化的金額。由於這是一個多語言程序,用戶可以指定自己的格式,所以沒有固定的模式。
例子:格式化數量到數據庫格式

250.000 
250,000 
250.000,00 
250,000.00 

可悲的是,我不得不「非格式」他們之前,將它們存儲到數據庫或MySQL會明白我的號碼作爲花車,反之亦然。

我該如何克服這個問題?有任何想法嗎?

+0

你需要知道他們使用的文化/數字格式。你可以讓他們告訴你,或者你可以告訴他們他們必須如何提供 - 但你無法以可靠的方式神奇地決定他們。一旦你知道他們使用的是什麼格式/文化,你可以適當地來回轉換。 – prodigitalson

回答

0

OK,最後我做到了,所以我會分享我的解決方案
首先,我用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); 

我基本上擺脫一切的除了小數點分隔符,然後我用一個標準(.)替換它。

它就像一個魅力。

0

你可以選擇允許用戶輸入他們想要的內容,在這種情況下,如果你想這裏,你將會清理(並在小數點符號的情況下進行翻譯)。或者你可以限制他們輸入的內容,強迫他們留下千分隔符。

0
  1. 您將不得不檢查客戶端的本地化,並相應地解析數據。 2,500.00 = 2.500,00。這取決於位置。
  2. 不要讓用戶輸入「,」。
  3. 有一個單獨的框讓用戶輸入小數點後的東西。
  4. 讓箱子預填充0.00。告訴用戶這是格式。
0
  • 以合適的格式從用戶處獲取輸入是一種好方法,在輸入區域附近顯示可查看格式的消息。
  • 您應該在用戶執行提交時驗證輸入數據。
  • 在將用戶輸入直接存儲到數據庫中之前,您可以使用JavaScript和服務器端編程語言中的正則表達式進行驗證。