我认为这是一个相当愚蠢的问题,我研究了如何格式化数字转换为价格格式。我使用smarty作为模板系统。是否有可能通过smarty或其他方法来格式化价格?我需要将类型编号1000000转换为$1.000.000如果没有smarty的输出格式,还有什么其他方法?谢谢
t3psigkw1#
使用PHP的money format function在smarty,这将是{$myNumber|money_format:'%i'}
{$myNumber|money_format:'%i'}
hwamh0ep2#
使用插件为smarty 3.xhttp://www.smarty.net/docs/en/api.register.plugin.tpl代码示例:
$smarty = new Smarty; $smarty->registerPlugin("modifier", "number_format", "number_format");
在smarty tpl文件中,你可以这样编写html:
... <td style="text-align:right;border: 1px solid black;border-collapse: collapse;">{$upah|number_format:2:",":"."}</td> ...
注:“,”为十进制符号,“.”为千进制符号,可以互换。
nr9pn0ug3#
强烈建议使用国际化扩展类NumberFormatterPHP函数手册:https://www.php.net/manual/en/numberformatter.formatcurrency.phpPHP手册类:https://www.php.net/manual/en/class.numberformatter.phpPHP扩展手册:https://www.php.net/manual/en/book.intl.php工作做得很完美。PHP代码示例:
NumberFormatter
$smarty = new Smarty(); $smarty->registerPlugin('modifier', 'format_currency', [ NumberFormatter::create('en_US', NumberFormatter::CURRENCY), 'formatCurrency' ]);
Smarty模板:
{9.1|format_currency:USD} {100.19|format_currency:EUR}
输出
$9.10 €100.19
您可以使用默认区域设置locale_get_default()来代替'en_US'PHP manual:PHP
locale_get_default()
3条答案
按热度按时间t3psigkw1#
使用PHP的money format function
在smarty,这将是
{$myNumber|money_format:'%i'}
hwamh0ep2#
使用插件为smarty 3.x
http://www.smarty.net/docs/en/api.register.plugin.tpl
代码示例:
在smarty tpl文件中,你可以这样编写html:
注:“,”为十进制符号,“.”为千进制符号,可以互换。
nr9pn0ug3#
强烈建议使用国际化扩展类
NumberFormatter
PHP函数手册:https://www.php.net/manual/en/numberformatter.formatcurrency.php
PHP手册类:https://www.php.net/manual/en/class.numberformatter.php
PHP扩展手册:https://www.php.net/manual/en/book.intl.php
工作做得很完美。
PHP代码示例:
Smarty模板:
输出
您可以使用默认区域设置
locale_get_default()
来代替'en_US'PHP manual:PHP