我使用了PHP的 NumberFormatter 。但我收到的错误是' NumberFormatter not found '。然后我使用 Money包,https://packagist.org/packages/money/money但是,不支持INR(印度货币)。
虽然我不太关心带有数字的卢比符号,但至少我需要格式化数字; 例如:从 7827894.8 到 78,27,894.80 。 我怎样才能实现它?
我无法使用,
请帮助我实现代表资金的正确方式(使用任何包或使用自定义功能) TIA
答案 0 :(得分:1)
几个月前我写的github gists之一,
<?php
function IND_money_format($money){
$decimal = (string)($money - floor($money));
$money = floor($money);
$length = strlen($money);
$m = '';
$money = strrev($money);
for($i=0;$i<$length;$i++){
if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$length){
$m .=',';
}
$m .=$money[$i];
}
$result = strrev($m);
$decimal = preg_replace("/0\./i", ".", $decimal);
$decimal = substr($decimal, 0, 3);
if( $decimal != '0'){
$result = $result.$decimal;
}
return $result;
}
?>
如何在laravel中将其添加为全局辅助函数?
1 - 在app目录中为辅助函数创建一个Helpers
目录
`mkdir app / Helpers&#39;
2 - 下载Indian_currency_format.php
文件并将其保存到Helpers目录。
3 - 在你的composer.json中将文件添加到&#34;文件&#34;自动加载的属性,以便它可以由作曲家使用PSR-4自动加载加载 (见https://getcomposer.org/doc/04-schema.md#psr-4),
like so:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Helpers/indian_money_format.php"
]
},
4 - 最后运行composer dump-autoload
以刷新自动加载缓存。
查看我在how to format a number to Indian Rupee format in PHP / Laravel上的博文,深入了解此功能的实际运作方式。
答案 1 :(得分:0)
如果您不想使用任何软件包并且想以laravel方式执行此操作,我建议您执行以下操作。该解决方案融合了纯PHP。我已经在laravel 5中对此进行了测试,效果很好。
首先运行:
创建HelperServiceProviderphp artisan make:provider HelperServiceProvider
然后打开config / app.php并注册服务提供商:
'providers' => [
/* other providers */
'App\Providers\HelperServiceProvider',
]
现在创建一个文件夹 app \ Helpers 并在该文件夹中创建一个文件 moneyformat.php
<?php
/* moneyformat.php */
function rupee_format($num) {
$explrestunits = "" ;
if(strlen($num)>3){
$lastthree = substr($num, strlen($num)-3, strlen($num));
$restunits = substr($num, 0, strlen($num)-3); // extracts the last three digits
$restunits = (strlen($restunits)%2 == 1)?"0".$restunits:$restunits; // explodes the remaining digits in 2's formats, adds a zero in the beginning to maintain the 2's grouping.
$expunit = str_split($restunits, 2);
for($i=0; $i<sizeof($expunit); $i++){
// creates each of the 2's group and adds a comma to the end
if($i==0)
{
$explrestunits .= (int)$expunit[$i].","; // if is first value , convert into integer
}else{
$explrestunits .= $expunit[$i].",";
}
}
$thecash = $explrestunits.$lastthree;
} else {
$thecash = $num;
}
return $thecash; // writes the final format where $currency is the currency symbol.
}
现在,您可以在刀片文件中显示数字,如下所示:
{{ rupee_format($price) }}