首頁  >  文章  >  後端開發  >  如何在 PHP 中解析未格式化的貨幣值?

如何在 PHP 中解析未格式化的貨幣值?

Barbara Streisand
Barbara Streisand原創
2024-11-12 22:27:01369瀏覽

How to Parse Unformatted Monetary Values in PHP?

在PHP 中解析未格式化的貨幣值

嘗試將表示為字串的貨幣值(例如「75,25 € 」)解析為對於它們的數字等價物,僅依賴使用parsefloat() 方法可能並不總是足夠。為了解決此限制並確保跨不同區域設定和分隔符號格式的靈活性,需要更複雜的解決方案。

此解決方案利用正規表示式來提取數值,考慮貨幣金額中使用的各種可能的分隔符號和格式。給定輸入字串,首先使用 preg_replace() 刪除不必要的字元。隨後的正規表示式操作會識別並刪除分隔符和千位分隔符,從而產生一個數字字串。

最後,清理後的字串將接受標準的 str_replace() 操作,以在轉換為浮點數之前將小數點分隔符號統一為句點使用(浮動)。這種綜合方法將點和逗號作為小數分隔符號處理,確保無論語言環境如何都能準確解析。

這裡有一個範例來說明該過程:

<?php

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);
}

透過這種方法,您可以自信地解析未格式化的貨幣字串,無論語言和格式約定如何,都可以獲得可靠的數值。

以上是如何在 PHP 中解析未格式化的貨幣值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn