首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 使用 NumberFormatter 格式化貨幣:國際化貨幣顯示最佳實務

     編輯:PHP 相關知識

PHP 使用 NumberFormatter 格式化貨幣:國際化貨幣顯示最佳實務

NumberFormatter 是 PHP intl 擴充套件提供的強大類別,支援依地區設定格式化數字、貨幣、百分比等,自動處理貨幣符號位置、千分位分隔符、小數位數等細節,是多語系專案處理金額顯示的標準工具。

基本用法

<?php
$amount = '12345.67';

// 英國格式(英鎊符號在前,逗號分隔千分位,點號小數點)
$fmtUK = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
echo 'UK: ' . $fmtUK->formatCurrency($amount, 'EUR') . "\n";
// 輸出:UK: €12,345.67

// 德國格式(歐元符號在後,點號分隔千分位,逗號小數點)
$fmtDE = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
echo 'DE: ' . $fmtDE->formatCurrency($amount, 'EUR') . "\n";
// 輸出:DE: 12.345,67 €
?>

常用地區代碼與貨幣代碼

地區代碼語言/地區貨幣代碼範例
zh_TW繁體中文(台灣)TWD, USD
zh_CN簡體中文(中國)CNY, USD
en_US英文(美國)USD
ja_JP日文(日本)JPY
ko_KR韓文(韓國)KRW
fr_FR法文(法國)EUR

進階:解析貨幣字串為數值

<?php
$fmt = new NumberFormatter('zh_TW', NumberFormatter::CURRENCY);
$value = $fmt->parseCurrency('NT$12,345.67', $currency);
echo "數值:$value, 貨幣:$currency\n";
// 輸出:數值:12345.67, 貨幣:TWD
?>

封裝為工具函數

<?php
function formatCurrency(float $amount, string $currency = 'TWD', string $locale = 'zh_TW'): string {
    if (!extension_loaded('intl')) {
        // 降級處理:簡單格式化
        return number_format($amount, 2, '.', ',') . ' ' . $currency;
    }
    try {
        $fmt = new NumberFormatter($locale, NumberFormatter::CURRENCY);
        return $fmt->formatCurrency($amount, $currency);
    } catch (Exception $e) {
        error_log("NumberFormatter error: " . $e->getMessage());
        return number_format($amount, 2, '.', ',') . ' ' . $currency;
    }
}

// 使用
echo formatCurrency(12345.67, 'TWD', 'zh_TW'); // NT$12,345.67
echo formatCurrency(12345.67, 'USD', 'en_US'); // $12,345.67
echo formatCurrency(12345.67, 'EUR', 'de_DE'); // 12.345,67 €
?>

注意事項

  • 需安裝 intl 擴充套件: Ubuntu/Debian: apt-get install php-intl;Windows: 啟用 php_intl.dll。
  • ICU 版本影響: 格式規則依賴系統 ICU 資料庫,不同伺服器可能輸出略有差異,建議測試環境與生產環境 ICU 版本一致。
  • 效能: 建立 NumberFormatter 物件有開銷,高頻呼叫時應重用實例或快取。
  • 貨幣代碼: 必須使用 ISO 4217 標準代碼(如 USD, EUR, TWD, JPY),否則會拋出例外。

總結

NumberFormatter::formatCurrency() 是 PHP 專案處理國際化貨幣顯示的標準解法,正確使用可避免手動拼接字串造成的格式錯誤,並自動適應各地區慣用格式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved