从区域设置,我如何获得货币代码?

时间:2018-03-08 16:51:41

标签: php zend-framework2 currency-formatting

PHP有一个intl模块允许一些很酷的东西 - 比如在使用NumberFormatter类时获取货币符号。但这是一个巨大的假设 - 您已经拥有了想要获得该符号的货币的货币代码。

如何获取任何特定区域设置的货币代码?

例如:en_gb => gbpen_us => usdes_es => eur

我这样做,所以我可以在ZendFramework 2中使用currencyFormat视图帮助器:

$locale = 'en_gb'; //from get parameter
$symbol = 'GBP'; //How do get this?

$this->serviceManager
         ->get('viewhelpermanager')
         ->get('currencyFormat')
         ->setLocale($locale)
         ->setCurrencyCode($symbol);

1 个答案:

答案 0 :(得分:1)

根据Get currency ISO 4217 code based on locale的答案(感谢@avy提供评论中的链接),

$locale = 'en_gb'; //from $_GET parameter

//get symbol for this locale
$symbol = \NumberFormatter::create(
    $locale,
    \NumberFormatter::CURRENCY
)->getTextAttribute(\NumberFormatter::CURRENCY_CODE);

//Add locale to currency formatter so we get correct symbol and formatting
$this->serviceManager
        ->get('viewhelpermanager')
        ->get('currencyFormat')
        ->setLocale($locale)
        ->setCurrencyCode($symbol);