Rate this script:  I Love it  /   I Hate it

Number Speller


Code


<?php
/**
* English number speller (PHP 4 or greater)
*
* @param string $number a string representing a positive, integral number with 15 digits or less
* @return string|false the spelled out number in English, or false if the number is invalid
* @author {@link http://www.lesantoso.com Lucky E. Santoso} <lesantoso@yahoo.com>
* @copyright Copyright (c) 2006 Lucky E. Santoso
* @license http://opensource.org/licenses/gpl-license.php The GNU General Public License (GPL)
*/
 
function spellNumberInEnglish ($number) {
        $number = strval($number);
        if (!ereg("^[0-9]{1,15}$", $number))
                return(false);
        $ones = array("", "one", "two", "three", "four",
                "five", "six", "seven", "eight", "nine");
        $teens = array("ten", "eleven", "twelve", "thirteen", "fourteen",
                "fifteen", "sixteen", "seventeen", "eighteen", "nineteen");
        $tens = array("", "", "twenty", "thirty", "forty",
                "fifty", "sixty", "seventy", "eighty", "ninety");
        $majorUnits = array("", "thousand", "million", "billion", "trillion");
        $result = "";
        $isAnyMajorUnit = false;
        $length = strlen($number);
        for ($i = 0, $pos = $length - 1; $i < $length; $i++, $pos--) {
                if ($number{$i} != '0') {
                        if ($pos % 3 == 0)
                                $result .= $ones[$number{$i}] . ' ';
                        else if ($pos % 3 == 1) {
                                if ($number{$i} == '1') {
                                        $result .= $teens[$number{$i + 1}] . ' ';
                                        $i++; $pos--;
                                } else {
                                        $result .= $tens[$number{$i}];
                                        $result .= $number{$i + 1} == '0'? ' ' : '-';
                                }
                        } else
                                $result .= $ones[$number{$i}] . " hundred ";
                        $isAnyMajorUnit = true;
                }
                if ($pos % 3 == 0 && $isAnyMajorUnit) {
                        $result .= $majorUnits[$pos / 3] . ' ';
                        $isAnyMajorUnit = false;
                }
        }
        trim($result);
        if ($result == "") $result = "zero";
        return($result);
}
?>
 

 

 
Number Speller scripts | Number Speller snippet | Number Speller example | Number Speller tutorial | Number Speller code