嗨我有一個格式化數量的問題。
在我的輸入表單上,用戶可以添加和編輯格式化的金額。由於這是一個多語言程序,用戶可以指定自己的格式,所以沒有固定的模式。
例子:格式化數量到數據庫格式
250.000
250,000
250.000,00
250,000.00
可悲的是,我不得不「非格式」他們之前,將它們存儲到數據庫或MySQL會明白我的號碼作爲花車,反之亦然。
我該如何克服這個問題?有任何想法嗎?
嗨我有一個格式化數量的問題。
在我的輸入表單上,用戶可以添加和編輯格式化的金額。由於這是一個多語言程序,用戶可以指定自己的格式,所以沒有固定的模式。
例子:格式化數量到數據庫格式
250.000
250,000
250.000,00
250,000.00
可悲的是,我不得不「非格式」他們之前,將它們存儲到數據庫或MySQL會明白我的號碼作爲花車,反之亦然。
我該如何克服這個問題?有任何想法嗎?
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);
我基本上擺脫一切的除了小數點分隔符,然後我用一個標準(.
)替換它。
它就像一個魅力。
你可以選擇允許用戶輸入他們想要的內容,在這種情況下,如果你想這裏,你將會清理(並在小數點符號的情況下進行翻譯)。或者你可以限制他們輸入的內容,強迫他們留下千分隔符。
你需要知道他們使用的文化/數字格式。你可以讓他們告訴你,或者你可以告訴他們他們必須如何提供 - 但你無法以可靠的方式神奇地決定他們。一旦你知道他們使用的是什麼格式/文化,你可以適當地來回轉換。 – prodigitalson