我正在尝试使用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
。
检查支持哪些区域设置:
locale -a
添加所需的区域设置(例如
ru
):sudo locale-gen ru_RU sudo locale-gen ru_RU.UTF-8
运行此更新命令和
sudo update-locale
重新启动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)
这将给出预期的结果,但当然这不是一个动态的解决方案。