PHP有一个intl
模块允许一些很酷的东西 - 比如在使用NumberFormatter
类时获取货币符号。但这是一个巨大的假设 - 您已经拥有了想要获得该符号的货币的货币代码。
如何获取任何特定区域设置的货币代码?
例如: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);
答案 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);