function convertTwoDigit($digit1, $digit2) { if ($digit2 == "0") { switch ($digit1) { case "1": return "ten"; case "2": return "twenty"; case "3": return "thirty"; case "4": return "forty"; case "5": return "fifty"; case "6": return "sixty"; case "7": return "seventy"; case "8": return "eighty"; case "9": return "ninety"; } } else { if ($digit1 == "1") { switch ($digit2) { case "1": return "eleven"; case "2": return "twelve"; case "3": return "thirteen"; case "4": return "fourteen"; case "5": return "fifteen"; case "6": return "sixteen"; case "7": return "seventeen"; case "8": return "eighteen"; case "9": return "nineteen"; } } else { $temp = convertDigit($digit2); switch ($digit1) { case "2": return "twenty-{$temp}"; case "3": return "thirty-{$temp}"; case "4": return "forty-{$temp}"; case "5": return "fifty-{$temp}"; case "6": return "sixty-{$temp}"; case "7": return "seventy-{$temp}"; case "8": return "eighty-{$temp}"; case "9": return "ninety-{$temp}"; } } } }
function convertNumber($num) { $dec = strpos($num, '.'); if ($dec !== false) { list($num, $dec) = explode('.', $num); } else { $dec = 0; } $output = ""; if ($num[0] == "-") { $output .= "negative "; $num = ltrim($num, '-'); } else { if ($num[0] == "+") { $output .= "positive "; $num = ltrim($num, '+'); } } if ($num[0] == "0") { $output .= " zero"; } else { $num = str_pad($num, 36, "0", STR_PAD_LEFT); $group = rtrim(chunk_split($num, 3, " "), " "); $groups = explode(" ", $group); $groups2 = array(); foreach ($groups as $g) { $groups2[] = convertThreeDigit($g[0], $g[1], $g[2]); } for ($z = 0; $z < count($groups2); $z++) { if ($groups2[$z] != "") { $output .= $groups2[$z] . convertGroup(11 - $z) . ($z < 11 && !array_search("", array_slice($groups2, $z + 1, -1)) && $groups2[11] != "" && $groups[11][0] == '0' ? " and " : ", "); } } $output = rtrim($output, ", "); } if ($dec > 0) { $output .= " point"; for ($i = 0; $i < strlen($dec); $i++) { $output .= " " . convertDigit($dec[$i]); } } return $output; }