Koo*_*bin 42 php formatting currency
我的页面中显示了一些价格值.
我正在编写一个函数,它接受浮动价格并返回带有货币代码的格式化货币val.
例如,fnPrice(1001.01)应该打印$ 1,000.01
Pek*_*ica 117
最简单的答案是number_format().
echo "$ ".number_format($value, 2);
Run Code Online (Sandbox Code Playgroud)
如果您希望您的应用程序能够使用多种货币和区域设置感知格式(1.000,00例如,对于我们这些欧洲人来说),它会变得有点复杂.
虽然money_format()它在Windows上不起作用并且依赖setlocale(),但在我看来这是垃圾,因为它需要在服务器端安装(任意命名的)语言环境包.
如果您想要认真地国际化您的应用程序,请考虑使用像Zend Framework的Zend_Locale和Zend_Currency这样的完整国际化库.
Mat*_*ieu 55
使用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;
Run Code Online (Sandbox Code Playgroud)
打印:
UK: €12,345.67
DE: 12.345,67 €
Run Code Online (Sandbox Code Playgroud)
sprintf()是各种字符串格式的PHP函数 http://php.net/manual/en/function.sprintf.php
我用这个函数:
function formatDollars($dollars){
return '$ '.sprintf('%0.2f', $dollars);
}
Run Code Online (Sandbox Code Playgroud)
我构建了这个小函数来自动将任何东西格式化为一个不错的货币格式。
function formatDollars($dollars)
{
return "$".number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)),2);
}
Run Code Online (Sandbox Code Playgroud)
编辑
有人指出,这并不显示负值。我把它分成两行,这样编辑格式更容易。如果它是负值,则将其括在括号中:
function formatDollars($dollars)
{
$formatted = "$" . number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)), 2);
return $dollars < 0 ? "({$formatted})" : "{$formatted}";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100493 次 |
| 最近记录: |