将区域设置信息设置为:
$locale = 'it_IT';
$moneyFormat = '%n';
setlocale(LC_MONETARY, $locale.'.utf8');
$optionPrice = money_format($moneyFormat, floatval($option->optionPrice));
价格显示为:
€ 23
而不是
23 €
我找到了区域设置标识符p_sign_posn来设置货币符号的位置,但我不知道如何修改它,显然它在IT区域设置中默认设置为1.
任何人都可以启发我找到一个聪明的解决方案吗?
提前致谢。
编辑:意大利的语言环境显然安装在系统上
vmamp@AMP30:~> locale -a | grep it
it_CH
it_CH.utf8
it_IT
it_IT.utf8
it_IT@euro
答案 0 :(得分:1)
要使用区域设置感知功能,您必须在计算机上安装所请求的区域设置。如果未显示请求的区域设置,则对setlocale
的调用将失败,并且不会更改任何内容。
例如,我安装了es_ES
语言环境,但没有安装it_IT
:
setlocale(LC_MONETARY, 'es_ES.utf8');
echo money_format($moneyFormat, floatval(12))
// ⇒ 12,00 €
setlocale(LC_MONETARY, 'en_US.utf8');
echo money_format($moneyFormat, floatval(12))
// ⇒ $12.00
setlocale(LC_MONETARY, 'it_IT.utf8');
echo money_format($moneyFormat, floatval(12))
// FAIL!!!
// ⇒ $12.00
正如您所看到的,后一个调用被忽略(setlocale
返回0
。)所以您遇到的问题不是欧元的位置;可能缺少it_IT
l10n安装。
答案 1 :(得分:0)
对于意大利货币模式,您可以执行以下操作:
$ money = substr(money_format('%。2n',$ number),4)。' €';
给出$ number = 77500
你得到
77.500,00€