17

我不知道如何获得货币符号?

目前我正在使用

setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);

这给了我输出

GBP1,000

但我想要

£1,000

我已经查看了 PHP 手册,但它并没有那么有用。

有任何想法吗?

4

7 回答 7

22

这对我有用:

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可以节省额外的调用。

于 2012-12-20T18:13:59.663 回答
22

你试过这个吗?

setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));
于 2012-01-26T14:22:33.067 回答
3

对于像我这样认为 PHP 的 money_format 很糟糕的人来说,这是一个解决方案。

$formatted = '£' . number_format( (float) $amount, 2, '.', ',' );
于 2017-02-08T10:40:03.237 回答
1

我知道这是一个旧线程,但我发现的方式不使用现在已弃用的 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);
于 2020-06-26T12:23:29.453 回答
0

上面的解决方案都不适合我。他们在标志A前打印了一个“ ” 。£相反,建立在 Aidan 和 Diegos 的解决方案上,我有以下内容:

setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo (money_format('%n', $bagel->Price)); 
于 2015-01-23T09:31:56.423 回答
-1

一个简单的解决方案是将 GBP 替换为 & pound ; (没有空格)money_format 之后。

于 2012-01-26T14:19:50.283 回答
-6

使用 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);
于 2012-01-26T14:23:59.540 回答