立法会货币资讯科技_IT@utf8用PHP显示金额前的欧元符号

立法会货币资讯科技_IT@utf8用PHP显示金额前的欧元符号,php,locale,Php,Locale,将区域设置信息设置为: $locale = 'it_IT'; $moneyFormat = '%n'; setlocale(LC_MONETARY, $locale.'.utf8'); $optionPrice = money_format($moneyFormat, floatval($option->optionPrice)); 价格如下所示: € 23 反而 23 € 我找到了区域设置标识符p_sign_posn来设置货币符号的位置,但我不知道如何修改它,显然,对于it区域设

将区域设置信息设置为:

$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

要使用区域设置感知功能,您必须在计算机上安装请求的区域设置。如果未显示请求的区域设置,则对
setlocale
的调用将失败,并且不会更改任何内容

例如,我安装了
es\u es
locale,但没有安装
it\u 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
),因此您遇到的问题不是eurosign的位置;可能是缺少安装的
it\u\it
l10n。

对于意大利货币模式,您可以执行以下操作:

$money=substr(money_格式('.2n',$number),4)。'€'

给定的$number=77500

你得到


77.500,00€

谢谢您的回复,我们已经考虑过这种情况,但是意大利的地点是合适的。我用这些信息编辑了我的问题。
_IT@euro
在区域设置列表中,我想到了正确显示欧元符号的方法。我们也尝试过这种区域设置,但货币仍然显示为23欧元。这似乎是正确的方式[,但我发现不同的意大利语页面的格式要求从我们的客户23欧元是的,我明白了。然后你可能需要黑客意大利语:(是的,这是我们要做的。谢谢你的评论