我正在創建一個用戶必須輸入多個數字的網站。
Theese號已被驗證(非法字符等),並將其轉換爲格式:PHP中的數字轉換
1234.56
我的問題是我怎麼轉換(由於不同的國家符號)十進制/千的不同組合-delimiters:
1234,56/1.234,56/1234.56/1,234.56
預期的結果應該永遠是:1234.56
我正在創建一個用戶必須輸入多個數字的網站。
Theese號已被驗證(非法字符等),並將其轉換爲格式:PHP中的數字轉換
1234.56
我的問題是我怎麼轉換(由於不同的國家符號)十進制/千的不同組合-delimiters:
1234,56/1.234,56/1234.56/1,234.56
預期的結果應該永遠是:1234.56
如果你總是有2位小數(至於價格左右),你可以只取最後一個點或逗號,在此位置拆分輸入字符串並刪除所有非數字字符(和。在你的情況)從第一部分。
如果你不能保證有兩位小數,你需要通過檢查,如果在最後一個分隔符後面有3個數字(以確定是否有小數位),會變得棘手。
由於顯然您需要支持更大的一組國家,所以通用解決方案可能是最佳選擇。也許有一些Javascript,它也解決了這個問題(在提交表單之前轉換數字)。
您可以使用zend框架組件:Zend_Locale_Format :: getNumber()函數。 http://framework.zend.com/manual/en/zend.locale.parsing.html
定義*用戶應該如何輸入數字,至少是小數點分隔符是什麼。 – deceze 2012-08-09 08:38:49
你能否假設總會有兩位小數? ..或者總會有小數? – MatsLindh 2012-08-09 08:41:59
不幸的是我不能承擔任何事情。 這是一個沒有客戶端驗證的輸入字段,所以用戶可能(錯誤地)鍵入alpha-chars,在這種情況下,我的validaion函數應該返回一個錯誤。 所以我必須做所有的驗證服務器端 – user1586912 2012-08-09 09:07:44