vinnizworld
3/25/2015 - 12:19 PM

Number to Word Conversion

Number to Word Conversion

<?php

function n2w($a){

    $word = array();
    $deno = array(1000=>'hundred',100000=>'thousand',10000000=>'lac',1000000000=>'crore');
    $ones = array(1 => 'one',2 => 'two', 3 => 'three', 4 => 'four', 5 => 'five', 6=>'six',7=>'seven',8=>'eight',9=>'nine');
    $tens = array(1 => 'ten',2 => 'twenty', 3 => 'thirty', 4 => 'forty', 5 => 'fifty', 6=>'sixty',7=>'seventy',8=>'eighty',9=>'ninety');
    $exception = array(1 => 'eleven',2 => 'twelve', 3 => 'thirteen', 4 => 'fourteen', 5 => 'fiveteen', 6=>'sixteen',7=>'seventeen',8=>'eighteen',9=>'nineteen');

    $rup = explode('.',$a);
    $whole = (int)preg_replace('/,/','',$rup[0]);
    $t_place = $whole%100;
    if($t_place > 9){
       $p = strval($t_place);
       
       if((int)$p[0] == 1){
           $word[] = $exception[(int)$p[1]];
       }
       else{
           $word[] = $ones[(int)$p[1]];
           $word[] = $tens[(int)$p[0]];
       }
    }
    else{
        $word[] = $ones[$t_place];
    }
    //to get the hundreth place
    if(($p = $whole % 1000) >= 100){
        $q = strval($p);
        $word[] = $deno[1000];
        $word[] = $ones[(int)$q[0]];
    }
    $me = 100000;
    $flag = 0;
    while($flag != 2){
        if($whole % $me == $whole){
            $flag++;
        }
        if(($p = $whole % $me) >= ($me/100)){
            $q = strval($p);
            $word[] = $deno[$me];
            if($p >= $me/10){ 
                if($q[1] == '0'){
                    $word[] = $tens[(int)$q[0]];
                }
                else if($q[0] == '1' && $q[1] != '0'){
                    $word[] = $exception[(int)$q[1]];
                }
                else{
                    $word[] = $ones[(int)$q[1]];
                    $word[] = $tens[(int)$q[0]];
                }
            }
            else{
                $word[] = $ones[(int)$q[0]];
            }
        }
        $me *= 100;
    }
    echo implode( array_reverse( $word ), ' ' ) ;
}

n2w(234234324);