//taking number as parameter
function convert_digit_to_words($no)
{
//creating array of word for each digit
$words = array('0'=> 'Zero' ,'1'=> 'one' ,'2'=> 'two' ,'3' => 'three','4' => 'four','5' => 'five','6' => 'six','7' => 'seven','8' => 'eight','9' => 'nine','10' => 'ten','11' => 'eleven','12' => 'twelve','13' => 'thirteen','14' => 'fourteen','15' => 'fifteen','16' => 'sixteen','17' => 'seventeen','18' => 'eighteen','19' => 'nineteen','20' => 'twenty','30' => 'thirty','40' => 'forty','50' => 'fifty','60' => 'sixty','70' => 'seventy','80' => 'eighty','90' => 'ninty','100' => 'hundred','1000' => 'thousand','100000' => 'lac','10000000' => 'crore');
//$words = array('0'=> '0' ,'1'=> '1' ,'2'=> '2' ,'3' => '3','4' => '4','5' => '5','6' => '6','7' => '7','8' => '8','9' => '9','10' => '10','11' => '11','12' => '12','13' => '13','14' => '14','15' => '15','16' => '16','17' => '17','18' => '18','19' => '19','20' => '20','30' => '30','40' => '40','50' => '50','60' => '60','70' => '70','80' => '80','90' => '90','100' => '100','1000' => '1000','100000' => '100000','10000000' => '10000000');
//for decimal number taking decimal part
$cash=(int)$no; //take number wihout decimal
$decpart = $no - $cash; //get decimal part of number
$decpart=sprintf("%01.2f",$decpart); //take only two digit after decimal
$decpart1=substr($decpart,2,1); //take first digit after decimal
$decpart2=substr($decpart,3,1); //take second digit after decimal
$decimalstr='';
//if given no. is decimal than preparing string for decimal digit's word
if($decpart>0)
{
$decimalstr.="point ".$numbers[$decpart1]." ".$numbers[$decpart2];
}
if($no == 0)
return ' ';
else {
$novalue='';
$highno=$no;
$remainno=0;
$value=100;
$value1=1000;
while($no>=100) {
if(($value <= $no) &&($no < $value1)) {
$novalue=$words["$value"];
$highno = (int)($no/$value);
$remainno = $no % $value;
break;
}
$value= $value1;
$value1 = $value * 100;
}
if(array_key_exists("$highno",$words)) //check if $high value is in $words array
return $words["$highno"]." ".$novalue." ".convert_digit_to_words($remainno).$decimalstr; //recursion
else {
$unit=$highno%10;
$ten =(int)($highno/10)*10;
return $words["$ten"]." ".$words["$unit"]." ".$novalue." ".convert_digit_to_words($remainno
).$decimalstr; //recursion
}
}
}