在 PHP 中解析財務資料時,通常需要將表示貨幣值的字串轉換為浮點數。為了實現這一點,一種常見的方法是將字串中的逗號替換為句點,然後使用 floatval() 函數。但是,此方法依賴固定的小數位分隔符號(句點),可能不適合使用逗號作為分隔符號的區域設定。
以下程式碼中提供了處理兩個小數分隔符號的更強大的解:
public function getAmount($money) { $cleanString = preg_replace('/([^0-9\.,])/i', '', $money); $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money); $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1; $stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased); $removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '', $stringWithCommaOrDot); return (float) str_replace(',', '.', $removedThousandSeparator); }
這個解由幾個組成步驟:
此方法可確保未格式化的貨幣值無論區域特定的小數分隔符號如何,都能正確解析。但是,請務必注意,它假設貨幣值的小數部分不超過兩位數。
範例測驗:
['1,10 USD', 1.10], ['1 000 000.00', 1000000.0], [' 000 000.21', 1000000.21], ['£1.10', 1.10], ['3 456 789', 123456789.0], ['3,456,789.12', 123456789.12], ['3 456 789,12', 123456789.12], ['1.10', 1.1], [',,,,.10', .1], ['1.000', 1000.0], ['1,000', 1000.0]
以上是如何在 PHP 中最佳化未格式化的貨幣值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!