Return to Snippet

Revision: 24108
at February 21, 2010 16:27 by adkatrit


Initial Code
<?php 

$nwords = array(    "zero", "one", "two", "three", "four", "five", "six", "seven", 
                     "eight", "nine", "ten", "eleven", "twelve", "thirteen", 
                     "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", 
                     "nineteen", "twenty", 30 => "thirty", 40 => "forty", 
                     50 => "fifty", 60 => "sixty", 70 => "seventy", 80 => "eighty", 
                     90 => "ninety" ); 

function int_to_words($x) 
{ 
     global $nwords; 
     if(!is_numeric($x)) 
     { 
         $w = '#'; 
     }else if(fmod($x, 1) != 0) 
     { 
         $w = '#'; 
     }else{ 
         if($x < 0) 
         { 
             $w = 'minus '; 
             $x = -$x; 
         }else{ 
             $w = ''; 
         } 
         if($x < 21) 
         { 
             $w .= $nwords[$x]; 
         }else if($x < 100) 
         { 
             $w .= $nwords[10 * floor($x/10)]; 
             $r = fmod($x, 10); 
             if($r > 0) 
             { 
                 $w .= '-'. $nwords[$r]; 
             } 
         } else if($x < 1000) 
         { 
             $w .= $nwords[floor($x/100)] .' hundred'; 
             $r = fmod($x, 100); 
             if($r > 0) 
             { 
                 $w .= ' and '. int_to_words($r); 
             } 
         } else if($x < 1000000) 
         { 
             $w .= int_to_words(floor($x/1000)) .' thousand'; 
             $r = fmod($x, 1000); 
             if($r > 0) 
             { 
                 $w .= ' '; 
                 if($r < 100) 
                 { 
                     $w .= 'and'; 
                 } 
                 $w .= int_to_words($r); 
             } 
         } else { 
             $w .= int_to_words(floor($x/1000000)) .' million'; 
             $r = fmod($x, 1000000); 
             if($r > 0) 
             { 
                 $w .= ' '; 
                 if($r < 100) 
                 { 
                     $word .= 'and '; 
                 } 
                 $w .= int_to_words($r); 
             } 
         } 
     } 
     return $w; 
} 
if(isset($_POST['num'])){
	$word = int_to_words($_POST['num']);
	echo $word.'<br /><a href="'.$_SERVER['PHP_SELF'].'"> try again</a><br />';	
}else{ 
     echo ' 
     <form method="post" action="'.$_SERVER['PHP_SELF'].'"> 
         <input type="text" name="num"> 
         <input type="submit" value="Convert"> 
     </form>'; 
} 
?>

Initial URL


Initial Description
this could be expanded to the billions place, but c'mon really people? it's got to call it quits somewhere

Initial Title
Number to word converter "1->one" up to the million place

Initial Tags
number

Initial Language
PHP