How to display Currency in Indian Numbering Format in PHP? How to display Currency in Indian Numbering Format in PHP? php php

How to display Currency in Indian Numbering Format in PHP?


You have so many options but money_format can do the trick for you.

Example:

$amount = '100000';setlocale(LC_MONETARY, 'en_IN');$amount = money_format('%!i', $amount);echo $amount;

Output:

1,00,000.00

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.

Pure PHP Implementation - Works on any system:

$amount = '10000034000';$amount = moneyFormatIndia( $amount );echo $amount;function moneyFormatIndia($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.}


$num = 1234567890.123;$num = preg_replace("/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/i", "$1,", $num);echo $num;// Input : 1234567890.123// Output : 1,23,45,67,890.123// Input : -1234567890.123// Output : -1,23,45,67,890.123


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