当前位置: 首页 > 知识库问答 >
问题:

货币格式()不显示货币

贾实
2023-03-14

我正在尝试使用money\u格式函数。

<?php

$number = 1299.46;

setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number); // Outputs 1299.46

而它应该打印$符号或美元?

我使用linux主机。

谢谢

共有3个答案

花高爽
2023-03-14

首先,您必须知道php版本正在使用

如果您不确定如何选中,请创建名为info的文件。php

插入代码=

(PHP 4 >= 4.3.0, PHP 5)
$number = 1234.56;

// let's print the international format for the en_US locale
setlocale(LC_MONETARY, 'en_US');
echo money_format('%i', $number) . "\n";
// USD 1,234.56

// Italian national format with 2 decimals`
setlocale(LC_MONETARY, 'it_IT');
echo money_format('%.2n', $number) . "\n";
// Eu 1.234,56

注意:仅当系统具有strfmon功能时,才定义money_format()函数。例如,Windows没有,因此在Windows中未定义money_format()。

您可以使用另一种方法(PHP5)

示例#1numfmt_format_currency()示例

$fmt = numfmt_create( 'de_DE', NumberFormatter::CURRENCY );
echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
echo numfmt_format_currency($fmt, 1234567.891234567890000, "RUR")."\n";
$fmt = numfmt_create( 'ru_RU', NumberFormatter::CURRENCY );
echo numfmt_format_currency($fmt, 1234567.891234567890000, "EUR")."\n";
echo numfmt_format_currency($fmt, 1234567.891234567890000, "RUR")."\n";

示例#2 OO示例

$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
$fmt = new NumberFormatter( 'ru_RU', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";

上述示例将输出:

1.234.567,89 €
1.234.567,89 RUR
1 234 567,89€
1 234 567,89р.

例子取自php.net

如果替代方案不可行,那么解决方案是根据您的需要创建一种方法。

我希望能帮到你

皇甫通
2023-03-14

区域设置是由操作系统定义的常量。

我使用Ubuntu作为下面的例子。

>

locale -a

添加所需的区域设置(例如ru):

sudo locale-gen ru_RU
sudo locale-gen ru_RU.UTF-8

运行此更新并

sudo update-locale 

重启php fpm(检查您的php版本服务名称,如service--state-all

sudo service php7.2-fpm restart

但是要小心,因为很可能你使用的是带有“mod_php”的Apache,因为它是最受欢迎的。当setlocale()不是线程安全的时候,它可以在多线程环境中工作。看这里了解详情

姬存
2023-03-14

如果区域设置无效,money_format将无法正常工作。

例如,在Debian上,en_US不是有效的区域设置-您需要en_US. UTF-8或en_US. ISO-8559-1。

 类似资料:
  • 问题内容: 我需要显示此类货币格式,我们如何显示。 问题答案: 在HTML中 例如 您还可以推荐 https://docs.angularjs.org/api/ng/filter/currency

  • 问题内容: 我正在使用我给定的语言环境获取自定义货币格式。但是,这始终包含我不需要的货币符号,我只想要给定语言环境的正确货币数字格式而没有货币符号。 做一个抛出一个异常.. 问题答案: 以下作品。这有点丑陋,但可以履行合同: 您还可以从货币格式中获取模式,删除货币符号,然后从新模式中重构新格式:

  • 在我当前的项目中,我将货币值存储为表示美分数的。但是,当用户在文本字段中输入此值时,他们很可能希望将其输入为十进制值。此外,如果用户不手动输入,我想在前面加上一个美元符号。我如何利用为我完成大部分工作?或者是否有其他解决方案使用预先存在的Swing组件,这样我就不必通过手动编码来重新发明轮子?

  • 在此示例中,我们根据美国区域设置和丹麦语区域设置格式化货币。 IOTester.java import java.text.NumberFormat; import java.util.Locale; public class I18NTester { public static void main(String[] args) { Locale enLocale = new L

  • 问题内容: 有没有一种格式可以如下设置小数: 如果是整数,则省略小数部分。否则,格式要保留两位小数。 问题答案: 我建议使用java.text包: 这具有特定于区域设置的额外好处。 但是,如果必须的话,如果它是一整美元,则截断要返回的字符串:

  • 问题内容: 我想使用Python将类似188518982.18的数字格式化为188,518,982.18英镑。 我怎样才能做到这一点? 问题答案: 请参阅语言环境模块。 这会进行货币(和日期)格式化。