如何在PHP中设置货币格式

如何在PHP中设置货币格式,php,Php,我正在制作房地产门户网站。在该网站中,用户输入了物业价值,如 55,00000-45,35000-30,00000等等。 我的问题是,我想将这些值显示为 55 Lac(s)-45.35 Lac(s)-30 Lac(s)等等。所以请……建议我,我如何才能做到这一点 谢谢您可以在php中使用money\u format()函数 要在窗口中使用money\u format(),如果您有Intl扩展名,可以使用 -根据格式化程序规则格式化货币值。 手册中的示例 $fmt = new NumberForm

我正在制作房地产门户网站。在该网站中,用户输入了物业价值,如 55,00000-45,35000-30,00000等等。 我的问题是,我想将这些值显示为 55 Lac(s)-45.35 Lac(s)-30 Lac(s)等等。所以请……建议我,我如何才能做到这一点


谢谢

您可以在php中使用
money\u format()
函数

要在窗口中使用
money\u format()
,如果您有Intl扩展名,可以使用

-根据格式化程序规则格式化货币值。 手册中的示例

$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р.
另请参阅我关于如何将格式化的货币字符串解析回浮点的回答:

用于Zend Framework 而对于核心php


你可以使用这个功能

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;
 }
函数formatInCurrencyStyle($num){
$pos=strpos((字符串)$num,“.”);
如果($pos==false){
$decimalpart=“00”;
}
如果(!($pos==false)){
$decimalpart=substr($num,$pos+1,2);$num=substr($num,0,$pos);
}

如果(strlen($num)>3和strlen($num)使用
number\u格式

您也可以使用
货币\u格式


在正常情况下,money_格式是理想的方式,但由于您需要使用类似于“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)'
}
用一个简单的方法

number_format(200000)  // 200,000

为什么不简单地显示值除以100000?下降。这不是一个解决方案。@SaurabhChandraPatel:我知道,我没有把它作为答案添加。但是如果他只需要x.yz.lac(s)那么他为什么不应该使用它呢?@fall…..谢谢,伙计,这么简单…我不知道为什么我没有想到它…..无论如何…..谢谢…..一个lotsidenote:正如文档中指定的,此函数输出受区域设置的影响。
$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)'
}
number_format(200000)  // 200,000