从区域设置中,我如何获取货币代码?
From the locale, how do I get the currency code?
PHP 有一个 intl
模块,它允许一些很酷的事情——比如在使用 NumberFormatter
class 时获取货币符号。但这是一个巨大的假设——您已经有了要获取其符号的货币的货币代码。
如何获取任何特定区域设置的货币代码?
例如:en_gb
=> gbp
, en_us
=> usd
, es_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);
根据 Get currency ISO 4217 code based on locale (thanks @avy 对评论中 link 的回答),
$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);
PHP 有一个 intl
模块,它允许一些很酷的事情——比如在使用 NumberFormatter
class 时获取货币符号。但这是一个巨大的假设——您已经有了要获取其符号的货币的货币代码。
如何获取任何特定区域设置的货币代码?
例如:en_gb
=> gbp
, en_us
=> usd
, es_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);
根据 Get currency ISO 4217 code based on locale (thanks @avy 对评论中 link 的回答),
$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);