首頁 > 後端開發 > php教程 > 如何從不同語言環境的字串中準確解析貨幣值?

如何從不同語言環境的字串中準確解析貨幣值?

DDD
發布: 2024-11-14 15:01:02
原創
699 人瀏覽過

How to Accurately Parse Monetary Values from Strings in Various Locales?

在各種語言環境中準確取消貨幣值的格式

處理貨幣值通常需要將表示貨幣金額的字串轉換為數字數量。在 PHP 中,可以利用 parsefloat() 函數來實現此目的。但是,在處理可能因區域設定而異的值時,小數點分隔符號可能會有所不同。這對簡單的 parsefloat(str_replace(',', '.', $var)) 方法提出了挑戰。

全面的解決方案

解決此區域設定- 相關問題,請考慮以下解決方案,該解決方案可以有效地提取浮點值,同時考慮不同的小數分隔符號和千位分隔符號:

public function getAmount($money)
{
    $cleanString = preg_replace('/([^0-9\.,])/i', '', $money); // Remove non-numeric characters
    $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money); // Extract only numbers

    $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1; // Determine extra separators

    $stringWithCommaOrDot = preg_replace('/([,\.])/i', '', $cleanString, $separatorsCountToBeErased); // Replace separators
    $removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/i', '',  $stringWithCommaOrDot); // Remove excess thousand separators

    return (float) str_replace(',', '.', $removedThousandSeparator); // Convert to float with dot as decimal separator
}
登入後複製

優點和注意事項

This解決方案提供了一種可靠的方法來從不同區域的貨幣字串中提取浮動值。廣泛的測試已經驗證了其在各種場景下的準確性,包括以逗號或點作為小數分隔符號和千位分隔符號的值。

但是,需要注意的是,在處理超過兩位數的小數部分時,它可能會失敗。若要解決此限制,請相應地修改程式碼中的正規表示式模式。

實際實現

解決方案部署在https://github.com 的庫中/mcuadros/currency-Detector,專門根據區域特定設定識別和處理貨幣值。

以上是如何從不同語言環境的字串中準確解析貨幣值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板