如何在PHP中设置Money格式

时间:2013-08-01 06:08:31

标签: php

我正在制作房地产门户网站。在该用户输入的属性值如     55,00,000 - 45,35,000 - 30,00,000等。 我的问题是,我想将这些值显示为     55 Lac(s) - 45.35 Lac(s) - 30 Lac(s)等等。请...告诉我,我怎样才能做到这一点。

由于

6 个答案:

答案 0 :(得分:3)

你可以在php中使用money_format()函数。 http://php.net/manual/en/function.money-format.php

要在窗口中使用money_format(),如果您有Intl扩展名,则可以使用

http://de.php.net/manual/en/numberformatter.formatcurrency.php - 根据格式化程序规则格式化货币值。 手册中的示例

$fmt = new NumberFormatter( 'de_DE', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";
$fmt = new NumberFormatter( 'ru_RU', NumberFormatter::CURRENCY );
echo $fmt->formatCurrency(1234567.891234567890000, "EUR")."\n";
echo $fmt->formatCurrency(1234567.891234567890000, "RUR")."\n";

输出

1.234.567,89 €
1.234.567,89 RUR
1 234 567,89€
1 234 567,89р.

另请参阅我的答案,了解如何将格式化的金钱字符串解析回浮点数:

答案 1 :(得分:1)

对于正常情况,money_format是理想的方式,但是你需要使用'Lac'格式。您需要在条件的基础上编写自己的代码。

首先从用户输入的金额中删除所有逗号。像那样

$number = str_replace(',', '', $number);

然后检查并制作必要的字符串。

if($number > 10000000)
{
    $num = ((float)$number) / 10000000;
    $num = $num.' Crore(s)'
}
else if($number > 100000)
{
    $num = ((float)$number) / 100000;
    $num = $num.' Lac(s)'
}
else if($number > 1000)
{
    $num = ((float)$number) / 1000;
    $num = $num.' Thousand(s)'
}

答案 2 :(得分:0)

Zend Framework的

Look here 和核心php Here

string money_format ( string $format , float $number )

答案 3 :(得分:0)

你可以使用这个功能

function formatInCurrencyStyle($num){
     $pos = strpos((string)$num, ".");
     if ($pos === false) {
        $decimalpart="00";
     }
     if (!($pos === false)) {
        $decimalpart= substr($num, $pos+1, 2); $num = substr($num,0,$pos);
     }

     if(strlen($num)>3 & strlen($num) <= 12){
         $last3digits = substr($num, -3 );
         $numexceptlastdigits = substr($num, 0, -3 );
         $formatted = makeComma($numexceptlastdigits);
         $stringtoreturn = $formatted.",".$last3digits.".".$decimalpart ;
     }elseif(strlen($num)<=3){
        $stringtoreturn = $num.".".$decimalpart ;
     }elseif(strlen($num)>12){
        $stringtoreturn = number_format($num, 2);
     }

     if(substr($stringtoreturn,0,2)=="-,"){
        $stringtoreturn = "-".substr($stringtoreturn,2 );
     }

     return $stringtoreturn;
 }

 function makeComma($input){ 
     if(strlen($input)<=2)
     { return $input; }
     $length=substr($input,0,strlen($input)-2);
     $formatted_input = makeComma($length).",".substr($input,-2);
     return $formatted_input;
 }

答案 4 :(得分:0)

使用number_formathttp://php.net/manual/en/function.number-format.php

$english_format_number = number_format($number, 2, '.', ',');

您还可以使用money_formathttp://php.net/manual/en/function.money-format.php

Note:

The function money_format() is only defined if the system has strfmon capabilities. For example, Windows does not, so money_format() is undefined in Windows.

Note:

The LC_MONETARY category of the locale settings, affects the behavior of this function. Use setlocale() to set to the appropriate default locale before using this function. 

答案 5 :(得分:0)

只需使用简单的方法

number_format(200000)  // 200,000