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

Example source code:
<?php

include 'number_to_words.php';

$examples = array(19972001200614726358747484);

foreach (
$examples as $example) {
  
printf("number_to_words(%d) = %s<br>\n"$examplenumber_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');?>


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(12131);
  
$array_seconds = array(222);
  
$array_thirds = array(323);
  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);
}
?>