How to display Currency in Indian Numbering Format in PHP

后端 未结 22 1809
一整个雨季
一整个雨季 2020-12-01 06:14

I have a question about formatting the Rupee currency (Indian Rupee - INR).

For example, numbers here are represented as:

1
10
100
1,000
10,000
1,00,00         


        
相关标签:
22条回答
  • 2020-12-01 07:12
    echo 'Rs. '.IND_money_format(1234567890);
    
    function IND_money_format($money){
        $len = strlen($money);
        $m = '';
        $money = strrev($money);
        for($i=0;$i<$len;$i++){
            if(( $i==3 || ($i>3 && ($i-1)%2==0) )&& $i!=$len){
                $m .=',';
            }
            $m .=$money[$i];
        }
        return strrev($m);
    }
    

    NOTE:: it is not tested on float values and it suitable for only Integer

    0 讨论(0)
  • 2020-12-01 07:12

    You should check the number_format function.Here is the link

    Separating thousands with commas will look like

    $rupias = number_format($number, 2, ',', ',');
    
    0 讨论(0)
  • 2020-12-01 07:14

    Above Function Not working with Decimal

    $amount = 10000034000.001;
    $amount = moneyFormatIndia( $amount );
    echo $amount;
    
    
    
    
    function moneyFormatIndia($num){
            $nums = explode(".",$num);
            if(count($nums)>2){
                return "0";
            }else{
            if(count($nums)==1){
                $nums[1]="00";
            }
            $num = $nums[0];
            $explrestunits = "" ;
            if(strlen($num)>3){
                $lastthree = substr($num, strlen($num)-3, strlen($num));
                $restunits = substr($num, 0, strlen($num)-3); 
                $restunits = (strlen($restunits)%2 == 1)?"0".$restunits:$restunits; 
                $expunit = str_split($restunits, 2);
                for($i=0; $i<sizeof($expunit); $i++){
    
                    if($i==0)
                    {
                        $explrestunits .= (int)$expunit[$i].","; 
                    }else{
                        $explrestunits .= $expunit[$i].",";
                    }
                }
                $thecash = $explrestunits.$lastthree;
            } else {
                $thecash = $num;
            }
            return $thecash.".".$nums[1]; 
            }
        }
    

    Answer : 10,00,00,34,000.001

    0 讨论(0)
  • 2020-12-01 07:14

    If you dont want to use any inbuilt function in my case i was doing on iis server so was unable to use one the function in php so did this

    $num = -21324322.23;
    
    
    moneyFormatIndiaPHP($num);
    function moneyFormatIndiaPHP($num){
        //converting it to string 
        $numToString = (string)$num;
    
        //take care of decimal values
        $change = explode('.', $numToString);
    
        //taking care of minus sign
        $checkifminus =  explode('-', $change[0]);
    
    
        //if minus then change the value as per
        $change[0] = (count($checkifminus) > 1)? $checkifminus[1] : $checkifminus[0];
    
        //store the minus sign for further
        $min_sgn = '';
        $min_sgn = (count($checkifminus) > 1)?'-':'';
    
    
    
        //catch the last three
        $lastThree = substr($change[0], strlen($change[0])-3);
    
    
    
        //catch the other three
        $ExlastThree = substr($change[0], 0 ,strlen($change[0])-3);
    
    
        //check whethr empty 
        if($ExlastThree != '')
            $lastThree = ',' . $lastThree;
    
    
        //replace through regex
        $res = preg_replace("/\B(?=(\d{2})+(?!\d))/",",",$ExlastThree);
    
        //main container num
        $lst = '';
    
        if(isset($change[1]) == ''){
            $lst =  $min_sgn.$res.$lastThree;
        }else{
            $lst =  $min_sgn.$res.$lastThree.".".$change[1];
        }
    
        //special case if equals to 2 then 
        if(strlen($change[0]) === 2){
            $lst = str_replace(",","",$lst);
        }
    
        return $lst;
    }
    
    0 讨论(0)
提交回复
热议问题