<?php
$number_names = array (
"ones" => array (
"",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
"ten",
"eleven",
"twelve",
"thirteen",
"fourteen",
"fifteen",
"sixteen",
"seventeen",
"eighteen",
"nineteen"
),
"tens" => array (
"",
"ten",
"twenty",
"thirty",
"forty",
"fifty",
"sixty",
"seventy",
"eighty",
"ninety",
),
"orders" => array (
"",
"thousand",
"million",
"billion",
"trillion",
"quadrillion",
"quintillion"
)
);
$time_names = array (
"decade" => 315619200,
"year" => 31536000,
"month" => 2592000,
"week" => 604800,
"day" => 86400,
"hour" => 3600,
"minute" => 60,
"second" => 1
);
function suborder_name($number) {
global $number_names;
$name = "";
if ($number >= 1000)
$number %= 1000;
if ($number >= 100) {
$digit = (int)($number / 100);
$number %= 100;
$name .= "{$number_names["ones"][$digit]} hundred ";
}
if ($number >= 20) {
$digit = (int)($number / 10);
$number %= 10;
$name .= "{$number_names["tens"][$digit]}-";
}
$name .= "{$number_names["ones"][$number]}";
if ($name{strlen($name)-1} == ' ' || $name{strlen($name)-1} == '-')
$name = substr($name,0,strlen($name)-1);
return $name;
}
function order_name($number, $order) {
global $number_names;
$name = suborder_name($number);
if ($name) {
$name .= " {$number_names["orders"][$order]}";
$name = trim($name);
}
return $name;
}
function number_name($number) {
$number = (int)$number;
if ($number == 0)
return "zero";
$negative = false;
if ($number < 0) {
$negative = true;
$number = -$number;
}
$order = 0;
$name = "";
while ($number > 0) {
$suborder = (int)($number % 1000);
$number = (int)($number / 1000);
$subordername = order_name($suborder, $order);
$name = "$subordername, $name";
$order++;
}
if ($name)
$name = substr($name,0,strlen($name)-2);
if ($negative)
$name = "negative $name";
return $name;
}
function time_name($seconds,$verbose=0) {
global $time_names;
$name = "";
$seconds = (int)$seconds;
if ($seconds <= 0)
return ("zero seconds");
foreach ($time_names as $span => $length) {
if ($seconds >= $length) {
$num = (int)($seconds / $length);
$seconds %= $length;
if ($name || $verbose || $num != 1)
$name .= number_name($num) . " ";
$name .= "$span";
if ($num != 1)
$name .= "s";
$name .= ", ";
}
}
$name = substr($name,0,strlen($name)-2);
if(strrpos($name,", ") !== FALSE)
$name = substr_replace($name," and",strrpos($name,", "),1);
return $name;
}
?>
Notes: