在PHP中打印货币数字格式

时间:2010-10-25 11:07:09

标签: php formatting currency

我的页面中会显示一些价格值。

我正在编写一个函数,它接受浮动价格并返回带有货币代码的格式化货币val。

例如,fnPrice(1001.01)应打印$ 1,000.01

7 个答案:

答案 0 :(得分:107)

最简单的答案是number_format()

echo "$ ".number_format($value, 2);

如果您希望您的应用程序能够使用多种货币和区域设置感知格式(例如,对于我们这些欧洲人来说,1.000,00),它会变得有点复杂。

money_format()但它在Windows上不起作用并且依赖于setlocale(),这在我看来是垃圾,因为它需要在服务器端安装(任意命名的)语言环境包。

如果您想认真地将您的应用程序国际化,请考虑使用像Zend Framework Zend_LocaleZend_Currency这样的全面国际化库。

答案 1 :(得分:50)

使用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 €

答案 2 :(得分:7)

sprintf()是用于各种字符串格式化的PHP函数 http://php.net/manual/en/function.sprintf.php

我使用这个功能:

function formatDollars($dollars){
  return '$ '.sprintf('%0.2f', $dollars);
}

答案 3 :(得分:4)

我构建了这个小功能,可以自动将任何内容格式化为漂亮的货币格式。

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}";
}

答案 4 :(得分:1)

PHP有一个名为money_format的函数来执行此操作。阅读here

答案 5 :(得分:0)

<?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

?>

答案 6 :(得分:0)

尝试

echo "$".money_format('%i',$price);

输出将为

$ 1.06