我不知道如何获得货币符号?
目前我正在使用
setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);
这给了我输出
GBP1,000
但我想要
£1,000
我已经查看了 PHP 手册,但它并没有那么有用。
有任何想法吗?
我不知道如何获得货币符号?
目前我正在使用
setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);
这给了我输出
GBP1,000
但我想要
£1,000
我已经查看了 PHP 手册,但它并没有那么有用。
有任何想法吗?
这对我有用:
setlocale(LC_MONETARY, 'en_GB.UTF-8');
money_format('%n', 1000);
它类似于所选的解决方案,但它对我不起作用。为什么?原因是en_GB
我的系统中没有定义语言环境,只有en_GB.UTF-8
:
$ locale -a | grep "en_GB"
en_GB.utf8
此外,通过直接使用 UTF-8 代码集,utf8_encode
可以节省额外的调用。
你试过这个吗?
setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));
对于像我这样认为 PHP 的 money_format 很糟糕的人来说,这是一个解决方案。
$formatted = '£' . number_format( (float) $amount, 2, '.', ',' );
我知道这是一个旧线程,但我发现的方式不使用现在已弃用的 money_format
$fmt = numfmt_create( 'en_GB', NumberFormatter::CURRENCY );
$formattedAmount = numfmt_format_currency($fmt, 1000, "GBP");
echo $formattedAmount;
将显示 £1,000.00
如果您需要从末尾删除 .00 ,那么您可以使用
substr(formattedAmount, 0, -3);
上面的解决方案都不适合我。他们在标志A
前打印了一个“ ” 。£
相反,建立在 Aidan 和 Diegos 的解决方案上,我有以下内容:
setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo (money_format('%n', $bagel->Price));
一个简单的解决方案是将 GBP 替换为 & pound ; (没有空格)money_format 之后。
使用 str_replace() 函数是一个选项。
£ - 英镑 - £
(163)
// Search for the GBP in your string (subject) then replace for the symbol code
$search = "GBP";
$replace = "£";
$subject = "GBP";
echo str_replace($search, $replace, $subject);