[英]Print Currency Number Format in PHP
我有一些价格值要显示在我的页面中。
我正在编写一个函数,它采用浮动价格并返回带有货币代码的格式化货币 val。
例如, fnPrice(1001.01)
应该打印$ 1,000.01
最简单的答案是number_format()
。
echo "$ ".number_format($value, 2);
如果您希望您的应用程序能够使用多种货币和区域设置感知格式( 1.000,00
对于我们欧洲人来说是1.000,00
),它会变得有点复杂。
有money_format()
但它在 Windows 上不起作用并且依赖于setlocale()
,在我看来这是垃圾,因为它需要在服务器端安装(任意命名的)语言环境包。
如果您想认真地国际化您的应用程序,请考虑使用成熟的国际化库,如 Zend Framework 的Zend_Locale和Zend_Currency 。
使用 PHP 5.3+ 中的 intl 扩展,您可以使用NumberFormatter类:
$amount = '12345.67';
$formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
echo 'UK: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL;
$formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
echo 'DE: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL;
打印:
UK: €12,345.67
DE: 12.345,67 €
sprintf() 是用于各种字符串格式的 PHP 函数http://php.net/manual/en/function.sprintf.php
我使用这个功能:
function formatDollars($dollars){
return '$ '.sprintf('%0.2f', $dollars);
}
我构建了这个小函数来自动将任何东西格式化为一个不错的货币格式。
function formatDollars($dollars)
{
return "$".number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)),2);
}
编辑
有人指出,这并不表示负值。 我把它分成两行,这样编辑格式更容易。 如果它是负值,则将其括在括号中:
function formatDollars($dollars)
{
$formatted = "$" . number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)), 2);
return $dollars < 0 ? "({$formatted})" : "{$formatted}";
}
从文档
<?php
$number = 1234.56;
// english notation (default)
$english_format_number = number_format($number);
// 1,235
// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56
$number = 1234.5678;
// english notation without thousands separator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57
?>
参考链接: https ://www.php.net/manual/en/function.number-format.php
$amount = 1235.56
echo number_format($amount, 2, '.', ',');
输出为:1,235.56
如果您在输出中不需要逗号。请删除函数内的逗号。
例如
$amount = 1235.56
echo number_format($amount, 2, '.', '');
输出为:1235.56
PHP 有一个名为money_format
的函数来执行此操作。 在此处阅读有关内容。
试试
echo "$".money_format('%i',$price);
输出将是
1.06 美元
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.