Вот ссылка на простую функцию PHP, которая показывает, как с этим легко справиться:
http://webdeveloperblog.tiredmachine.com/php-converting-an-integer-123-to-ordinal-word-firstsecondthird/
Приведенный пример работает только в пятидесятые годы, но его легко расширить, чтобы достичь более высоких диапазонов.
function numToOrdinalWord($num)
{
$first_word = array('eth','First','Second','Third','Fouth','Fifth','Sixth','Seventh','Eighth','Ninth','Tenth','Elevents','Twelfth','Thirteenth','Fourteenth','Fifteenth','Sixteenth','Seventeenth','Eighteenth','Nineteenth','Twentieth');
$second_word =array('','','Twenty','Thirthy','Forty','Fifty');
if($num <= 20)
return $first_word[$num];
$first_num = substr($num,-1,1);
$second_num = substr($num,-2,1);
return $string = str_replace('y-eth','ieth',$second_word[$second_num].'-'.$first_word[$first_num]);
}