number_to_words(1997) = One Thousand Nine Hundred and Ninety Seven
number_to_words(2001) = Two Thousand and One
number_to_words(2006) = Two Thousand and Six
number_to_words(1472635) = One Million Four Hundred and Seventy Two Thousand Six Hundred and Thirty Five
number_to_words(8747484) = Eight Million Seven Hundred and Fourty Seven Thousand Four Hundred and Eighty Four
<?php
include 'number_to_words.php';
$examples = array(1997, 2001, 2006, 1472635, 8747484);
foreach ($examples as $example) {
printf("number_to_words(%d) = %s<br>\n", $example, number_to_words($example));
}
?>
<hr>
<b>Example source code:</b><br>
<?php highlight_file(__FILE__);?>
<hr>
<b>number_to_words.php:</b><br>
<?php highlight_file('number_to_words.php');?>
<?php
Function number_to_words($number) {
if (preg_match('/,/', $number)) $number = preg_replace('/,/', '', $number);
$ret = '';
if ($number < 20) {
if ($number == 1) return ' One';
if ($number == 2) return ' Two';
if ($number == 3) return ' Three';
if ($number == 4) return ' Four';
if ($number == 5) return ' Five';
if ($number == 6) return ' Six';
if ($number == 7) return ' Seven';
if ($number == 8) return ' Eight';
if ($number == 9) return ' Nine';
if ($number == 10) return ' Ten';
if ($number == 11) return ' Eleven';
if ($number == 12) return ' Twelve';
if ($number == 13) return ' Thirteen';
if ($number == 14) return ' Fourteen';
if ($number == 15) return ' Fifteen';
if ($number == 16) return ' Sixteen';
if ($number == 17) return ' Seventeen';
if ($number == 18) return ' Eighteen';
if ($number == 19) return ' Nineteen';
} elseif ($number < 100) {
if ($number < 30)
$ret .= ' Twenty' . number_to_words($number - 20);
elseif ($number < 40)
$ret .= ' Thirty' . number_to_words($number - 30);
elseif ($number < 50)
$ret .= ' Fourty' . number_to_words($number - 40);
elseif ($number < 60)
$ret .= ' Fifty' . number_to_words($number - 50);
elseif ($number < 70)
$ret .= ' Sixty' . number_to_words($number - 60);
elseif ($number < 80)
$ret .= ' Seventy' . number_to_words($number - 70);
elseif ($number < 90)
$ret .= ' Eighty' . number_to_words($number - 80);
else
$ret .= ' Ninety' . number_to_words($number - 90);
} else {
$thousands = intval($number / 1000);
$number = $number % 1000;
if ($thousands >= 1000) {
$ret .= sprintf (' %s Million', number_to_words(intval($thousands/1000)));
$thousands = $thousands % 1000;
}
if ($thousands > 0)
$ret .= sprintf (' %s Thousand', number_to_words($thousands));
$hundreds = intval($number / 100);
$number = $number %100;
if ($hundreds > 0)
$ret .= sprintf (' %s Hundred', number_to_words($hundreds));
if ($number > 0)
$ret .= sprintf (' and %s', number_to_words($number));
}
while (preg_match('/^ /', $ret))
$ret = preg_replace('/^ /', '', $ret);
#print '<br>returning $ret';
return $ret;
}
Function dateworded($when) {
$yearnum = Date('Y', $when);
$yearstr = number_to_words($yearnum);
$monthstr = Date('F', $when);
$weekdaystr = Date('l', $when);
$monthdaystr = Date('j', $when);
$monthday = (int)$monthdaystr;
$array_firsts = array(1, 21, 31);
$array_seconds = array(2, 22);
$array_thirds = array(3, 23);
if ( in_array($monthday, $array_firsts) )
$monthdaystr .= 'st';
elseif ( in_array($monthday, $array_seconds) )
$monthdaystr .= 'nd';
elseif ( in_array($monthday, $array_thirds) )
$monthdaystr .= 'rd';
else
$monthdaystr .= 'th';
return sprintf('%s %s day of %s in the year %s',
$weekdaystr, $monthdaystr, $monthstr, $yearstr);
}
?>