money_format()不显示货币


money_format() not showing currency

我正在尝试使用money_format函数。

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

它应该打印$符号还是美元?

我在linux主机上。

感谢

如果区域设置无效,

money_format将无法正常工作。

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

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

以下示例中使用Ubuntu

  1. 检查支持哪些区域设置:

    locale -a
    
  2. 添加所需的区域设置(例如ru):

    sudo locale-gen ru_RU
    sudo locale-gen ru_RU.UTF-8
    
  3. 运行此更新命令和

    sudo update-locale 
    
  4. 重新启动php-fpm(检查您的php版本服务名称,如service --status-all

    sudo service php7.2-fpm restart
    

但要小心,因为很可能您使用的是带有"mod_php"的Apache,因为它是最受欢迎的。这个在多线程环境中工作,当setlocale()不是线程安全的时候。查看此处了解详细信息

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

如果您不确定如何检查,请创建一个名为info.php的文件

插入代码=><?php phpinfo(); ?>

(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功能。例如,Windows没有,所以money_format()在Windows中未定义。

您可以使用其他选项(PHP 5>=5.3.0,PECL intl>=1.0.0)

示例#1 numfmt_format_current()示例

$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

如果替代方案不可行,则解决方案是创建一个方法满足您的需求。

我希望能帮助你

它不应该退还美元或美元,请参阅文档。但是,您可以执行以下操作:

echo money_format('$%i', $number)

这将给出预期的结果,但当然这不是一个动态的解决方案。