【发布时间】:2011-04-30 03:52:33
【问题描述】:
我有一些价格值要显示在我的页面中。
我正在编写一个函数,它采用浮动价格并返回带有货币代码的格式化货币 val..
例如,fnPrice(1001.01) 应该打印 $ 1,000.01
【问题讨论】:
-
查看geekgong.com/formatting-currency-values-in-php,了解一下这个问题。
标签: php formatting currency
我有一些价格值要显示在我的页面中。
我正在编写一个函数,它采用浮动价格并返回带有货币代码的格式化货币 val..
例如,fnPrice(1001.01) 应该打印 $ 1,000.01
【问题讨论】:
标签: php formatting currency
参考链接: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
【讨论】:
试试
echo "$".money_format('%i',$price);
输出将是
1.06 美元
【讨论】:
来自docs
<?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
?>
【讨论】:
PHP 有一个名为money_format 的函数来执行此操作。阅读此here。
【讨论】:
我构建了这个小函数来自动将任何内容格式化为一种不错的货币格式。
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 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 €
【讨论】:
最简单的答案是number_format()。
echo "$ ".number_format($value, 2);
如果您希望您的应用程序能够使用多种货币和支持区域设置的格式(例如1.000,00,我们中的一些欧洲人),它会变得有点复杂。
有 money_format(),但它在 Windows 上不起作用,并且依赖于 setlocale(),在我看来这很垃圾,因为它需要在服务器端安装(任意命名的)语言环境包。
如果您想认真国际化您的应用程序,请考虑使用完整的国际化库,例如 Zend Framework 的 Zend_Locale 和 Zend_Currency。
【讨论】:
sprintf() 是用于各种字符串格式化的 PHP 函数 http://php.net/manual/en/function.sprintf.php
我使用这个功能:
function formatDollars($dollars){
return '$ '.sprintf('%0.2f', $dollars);
}
【讨论】:
$dollars(在sprintf() 中)包装在number_format() 中。这将添加逗号