在PHP,是否有一个简单的方式转换成数字?例如, 27第二十七.

有帮助吗?

解决方案

发现一些(2007/2008)源代码在线,因为它是版权但我可以自由地使用它并根据需要进行修改,所以我把它放在这里并在CC-Wiki下重新许可:

<?php
/**
 * English Number Converter - Collection of PHP functions to convert a number
 *                            into English text.
 *
 * This exact code is licensed under CC-Wiki on Stackoverflow.
 * http://creativecommons.org/licenses/by-sa/3.0/
 *
 * @link     http://stackoverflow.com/q/277569/367456
 * @question Is there an easy way to convert a number to a word in PHP?
 *
 * This file incorporates work covered by the following copyright and
 * permission notice:
 *
 *   Copyright 2007-2008 Brenton Fletcher. http://bloople.net/num2text
 *   You can use this freely and modify it however you want.
 */

function convertNumber($number)
{
    list($integer, $fraction) = explode(".", (string) $number);

    $output = "";

    if ($integer{0} == "-")
    {
        $output = "negative ";
        $integer    = ltrim($integer, "-");
    }
    else if ($integer{0} == "+")
    {
        $output = "positive ";
        $integer    = ltrim($integer, "+");
    }

    if ($integer{0} == "0")
    {
        $output .= "zero";
    }
    else
    {
        $integer = str_pad($integer, 36, "0", STR_PAD_LEFT);
        $group   = rtrim(chunk_split($integer, 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 ($fraction > 0)
    {
        $output .= " point";
        for ($i = 0; $i < strlen($fraction); $i++)
        {
            $output .= " " . convertDigit($fraction{$i});
        }
    }

    return $output;
}

function convertGroup($index)
{
    switch ($index)
    {
        case 11:
            return " decillion";
        case 10:
            return " nonillion";
        case 9:
            return " octillion";
        case 8:
            return " septillion";
        case 7:
            return " sextillion";
        case 6:
            return " quintrillion";
        case 5:
            return " quadrillion";
        case 4:
            return " trillion";
        case 3:
            return " billion";
        case 2:
            return " million";
        case 1:
            return " thousand";
        case 0:
            return "";
    }
}

function convertThreeDigit($digit1, $digit2, $digit3)
{
    $buffer = "";

    if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0")
    {
        return "";
    }

    if ($digit1 != "0")
    {
        $buffer .= convertDigit($digit1) . " hundred";
        if ($digit2 != "0" || $digit3 != "0")
        {
            $buffer .= " and ";
        }
    }

    if ($digit2 != "0")
    {
        $buffer .= convertTwoDigit($digit2, $digit3);
    }
    else if ($digit3 != "0")
    {
        $buffer .= convertDigit($digit3);
    }

    return $buffer;
}

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 convertDigit($digit)
{
    switch ($digit)
    {
        case "0":
            return "zero";
        case "1":
            return "one";
        case "2":
            return "two";
        case "3":
            return "three";
        case "4":
            return "four";
        case "5":
            return "five";
        case "6":
            return "six";
        case "7":
            return "seven";
        case "8":
            return "eight";
        case "9":
            return "nine";
    }
}

其他提示

或者,您可以使用 intl PHP包。这是一个示例代码,可以帮助您(命令行):

<?php
if ($argc < 3) 
    {
    echo "usage: php {$argv[0]} lang-tag number ...\n";
    exit;
    }

array_shift($argv);
$lang_tag = array_shift($argv);

$nf1 = new NumberFormatter($lang_tag, NumberFormatter::DECIMAL);
$nf2 = new NumberFormatter($lang_tag, NumberFormatter::SPELLOUT);

foreach ($argv as $num) 
    {
    echo $nf1->format($num).' is '.$nf2->format($num)."\n"; 
    }

还有就是 Numbers_Words 在PECL.这不正是你要求。以下语言支持:

  • bg(保加利亚)通过Kouber Saparev
  • cs(捷克)通过Petr'PePa'帕维尔
  • 德(德国)彼得*通过Klaban
  • dk(丹麦)的Jesper Veggerby
  • en_100(Donald Knuth系统、英语)通过彼得*Klaban
  • en_GB(英文)通过彼得*Klaban
  • en_US(美式英语)通过彼得*Klaban
  • es(西班牙卡斯特利亚诺)通过Xavier Noguer
  • es_AR(阿根廷西班牙文)通过马丁Marrese
  • 等(爱沙尼亚)通过埃尔基*Saarniit
  • fr(法国)通过Kouber Saparev
  • fr_BE(法国比利时)通过Kouber Saparev和菲利普*Bajoit
  • 他(希伯来文)通过哈达尔波拉特
  • hu_HU(匈牙利)通过Nils Homp
  • id(印度尼西亚)通过Ernas M.Jamil和Arif瑞法依Dwiyanto
  • it_IT(意大利)通过Filippo Beltramini和Davide Caironi
  • lt(立陶宛)通过Laurynas Butkus
  • nl(荷兰)通过重击范Dinter
  • pl(波兰)通过彼得*Klaban
  • pt_BR(巴西葡萄牙)由马塞洛柔美Marcal和马里奥*C.T.
  • 汝(俄罗斯)通过的安德烈*Demenev
  • sv(瑞典)通过Robin-爱立信

我重写了上面的代码以符合标准的美国书面字数格式。

function singledigit($number){
    switch($number){
        case 0:$word = "zero";break;
        case 1:$word = "one";break;
        case 2:$word = "two";break;
        case 3:$word = "three";break;
        case 4:$word = "four";break;
        case 5:$word = "five";break;
        case 6:$word = "six";break;
        case 7:$word = "seven";break;
        case 8:$word = "eight";break;
        case 9:$word = "nine";break;
    }
    return $word;
}

function doubledigitnumber($number){
    if($number == 0){
        $word = "";
    }
    else{
        $word = "-".singledigit($number);
    }       
    return $word;
}

function doubledigit($number){
    switch($number[0]){
        case 0:$word = doubledigitnumber($number[1]);break;
        case 1:
            switch($number[1]){
                case 0:$word = "ten";break;
                case 1:$word = "eleven";break;
                case 2:$word = "twelve";break;
                case 3:$word = "thirteen";break;
                case 4:$word = "fourteen";break;
                case 5:$word = "fifteen";break;
                case 6:$word = "sixteen";break;
                case 7:$word = "seventeen";break;
                case 8:$word = "eighteen";break;
                case 9:$word = "ninteen";break;
            }break;
        case 2:$word = "twenty".doubledigitnumber($number[1]);break;                
        case 3:$word = "thirty".doubledigitnumber($number[1]);break;
        case 4:$word = "forty".doubledigitnumber($number[1]);break;
        case 5:$word = "fifty".doubledigitnumber($number[1]);break;
        case 6:$word = "sixty".doubledigitnumber($number[1]);break;
        case 7:$word = "seventy".doubledigitnumber($number[1]);break;
        case 8:$word = "eighty".doubledigitnumber($number[1]);break;
        case 9:$word = "ninety".doubledigitnumber($number[1]);break;

    }
    return $word;
}

function unitdigit($numberlen,$number){
    switch($numberlen){         
        case 3:case 6:case 9:case 12:$word = "hundred";break;
        case 4:case 5:$word = "thousand";break;
        case 7:case 8:$word = "million";break;
        case 10:case 11:$word = "billion";break;
    }
    return $word;
}

function numberToWord($number){

    $numberlength = strlen($number);
    if ($numberlength == 1) { 
        return singledigit($number);
    }elseif ($numberlength == 2) {
        return doubledigit($number);
    }
    else {

        $word = "";
        $wordin = "";
        switch ($numberlength ) {
        case 5:case 8:  case 11:
            if($number[0] >0){
                $unitdigit = unitdigit($numberlength,$number[0]);
                $word = doubledigit($number[0].$number[1]) ." ".$unitdigit." ";
                return $word." ".numberToWord(substr($number,2));
            }
            else{
                return $word." ".numberToWord(substr($number,1));
            }
        break;
        default:
            if($number[0] >0){
                $unitdigit = unitdigit($numberlength,$number[0]);
                $word = singledigit($number[0]) ." ".$unitdigit." ";
            }               
            return $word." ".numberToWord(substr($number,1));
        }
    }
}

我需要一个解决方案,将'和'放入返回的字符串中并将其格式化为句子 - 通常就像人们会说的那样。所以我稍微调整了一个不同的解决方案 - 因为我认为这可能对某人有用。

4,835,301 returns "Four million eight hundred and thirty five thousand three hundred and one."

代码

function convertNumber($num = false)
{
    $num = str_replace(array(',', ''), '' , trim($num));
    if(! $num) {
        return false;
    }
    $num = (int) $num;
    $words = array();
    $list1 = array('', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven',
        'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'
    );
    $list2 = array('', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety', 'hundred');
    $list3 = array('', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion',
        'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quattuordecillion',
        'quindecillion', 'sexdecillion', 'septendecillion', 'octodecillion', 'novemdecillion', 'vigintillion'
    );
    $num_length = strlen($num);
    $levels = (int) (($num_length + 2) / 3);
    $max_length = $levels * 3;
    $num = substr('00' . $num, -$max_length);
    $num_levels = str_split($num, 3);
    for ($i = 0; $i < count($num_levels); $i++) {
        $levels--;
        $hundreds = (int) ($num_levels[$i] / 100);
        $hundreds = ($hundreds ? ' ' . $list1[$hundreds] . ' hundred' . ( $hundreds == 1 ? '' : '' ) . ' ' : '');
        $tens = (int) ($num_levels[$i] % 100);
        $singles = '';
        if ( $tens < 20 ) {
            $tens = ($tens ? ' and ' . $list1[$tens] . ' ' : '' );
        } elseif ($tens >= 20) {
            $tens = (int)($tens / 10);
            $tens = ' and ' . $list2[$tens] . ' ';
            $singles = (int) ($num_levels[$i] % 10);
            $singles = ' ' . $list1[$singles] . ' ';
        }
        $words[] = $hundreds . $tens . $singles . ( ( $levels && ( int ) ( $num_levels[$i] ) ) ? ' ' . $list3[$levels] . ' ' : '' );
    } //end for loop
    $commas = count($words);
    if ($commas > 1) {
        $commas = $commas - 1;
    }
    $words = implode(' ',  $words);
    $words = preg_replace('/^\s\b(and)/', '', $words );
    $words = trim($words);
    $words = ucfirst($words);
    $words = $words . ".";
    return $words;
}

使用NumberFormatter类,转换为单词很简单。

<?php

$number = '12345';
$locale = 'en_US';
$fmt = numfmt_create($locale, NumberFormatter::SPELLOUT);
$in_words = numfmt_format($fmt, $number);

print_r($in_words);
// twelve thousand three hundred forty-five

?>

您可以使用 NumberFormatter Class

$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
echo $f->format($myNumber);

这是我今晚写的一个小班。注意事项:

  1. 仅限英文。
  2. 只处理美国/法国对数十亿等的定义
  3. longform 方法不处理小数。它只是抹去了它们。如果您愿意,可以随意修改并添加该功能。
  4. numberformat 方法确实执行小数,但不进行任何舍入。由于PHP对整数大小的固有限制,我不得不创建一个新的 numberformat 函数。我正在翻译数字,以至于当我使用 number_format()检查我的翻译时,我花了30分钟才意识到我的翻译没有错, number_format 是。
  5. 这不是关于类的警告,而是关于PHP。 32位版本的PHP不会处理大于 2,147,483,647 (20亿和更改)的整数。 64位版本将处理类似 9 quintillion 之类的东西。但只要您将数字作为 string 提供给 longform 方法,这就无关紧要了。我在webform上的 ajax 上做了一个306位的数字就好了,只要我把它作为''+ number 传递给服务器。
  6. 因此,这个类将数字转换为 999 Centillion,999等。(例如,长度为9s 306字符的字符串)。任何大于此的数字,该函数只返回一个愚蠢的消息。

    用法:

    $number = '999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999';
    reallyBig::longform($number);
    

    可选的第二个布尔参数默认为true,它在正确的位置尽可能地添加逗号,以使数字更具可读性。

    顺便说一下,如果你希望它是负数,你可以在前面放一个 - ,但是输出字符串中包含的任何其他字符都将被删除。例如:

    reallyBig :: longform(' - C55LL-M5-4-a-9u7-71m3-M8'); 将输出:负50亿,五亿五千四百万,九十七万七千一百三十八

    任何其他方法都不需要 numberformat 方法。如果您想检查一个非常长的翻译号码,它就在那里。由于所有这些函数都将数字作为字符串处理,因此它们不会遇到PHP的限制。

    我停在999厘米的唯一原因是因为当我记不起十亿分之后的事情时,我正在看的网站上的最后一个数字。

    class reallyBig
    {
        private static $map, $strings;
        private static function map()
        {
            $map = array();
            $num = 1;
            $count = 1;
            while($num < 307)
            {
                if($count == 1) $map[$num] = $num+2;
                elseif($count == 2) $map[$num] = $num+1;
                else 
                {
                    $map[$num] = $num;
                    $count = 0;
                }
                $count++;
                $num++;
            }
            return $map;
        }
        private static function strings()
        {
            return array 
            (
                6 => 'thousand',
                9 => 'million',
                12 => 'billion',
                15 => 'trillion',
                18 => 'quadrillion',
                21 => 'quintillion',
                24 => 'sextillion',
                27 => 'septillion',
                30 => 'octillion',
                33 => 'nonillion',
                36 => 'decillion',
                39 => 'undecillion',
                42 => 'duodecillion',
                45 => 'tredecillion',
                48 => 'quattuordecillion',
                51 => 'quindecillion',
                54 => 'sexdecillion',
                57 => 'septendecillion',
                60 => 'octodecillion',
                63 => 'novemdecillion',
                66 => 'vigintillion',
                69 => 'unvigintillion',
                72 => 'duovigintillion',
                75 => 'trevigintillion',
                78 => 'quattuorvigintillion',
                81 => 'quinvigintillion',
                84 => 'sexvigintillion',
                87 => 'septenvigintillion',
                90 => 'octovigintillion',
                93 => 'novemvigintillion',
                96 => 'trigintillion',
                99 => 'untrigintillion',
                102 => 'duotrigintillion',
                105 => 'tretrigintillion',
                108 => 'quattuortrigintillion',
                111 => 'quintrigintillion',
                114 => 'sextrigintillion',
                117 => 'septentrigintillion',
                120 => 'octotrigintillion',
                123 => 'novemtrigintillion',
                126 => 'quadragintillion',
                129 => 'unquadragintillion',
                132 => 'duoquadragintillion',
                135 => 'trequadragintillion',
                138 => 'quattuorquadragintillion',
                141 => 'quinquadragintillion',
                144 => 'sexquadragintillion',
                147 => 'septenquadragintillion',
                150 => 'octoquadragintillion',
                153 => 'novemquadragintillion',
                156 => 'quinquagintillion',
                159 => 'unquinquagintillion',
                162 => 'duoquinquagintillion',
                165 => 'trequinquagintillion',
                168 => 'quattuorquinquagintillion',
                171 => 'quinquinquagintillion',
                174 => 'sexquinquagintillion',
                177 => 'septenquinquagintillion',
                180 => 'octoquinquagintillion',
                183 => 'novemquinquagintillion',
                186 => 'sexagintillion',
                189 => 'unsexagintillion',
                192 => 'duosexagintillion',
                195 => 'tresexagintillion',
                198 => 'quattuorsexagintillion',
                201 => 'quinsexagintillion',
                204 => 'sexsexagintillion',
                207 => 'septensexagintillion',
                210 => 'octosexagintillion',
                213 => 'novemsexagintillion',
                216 => 'septuagintillion',
                219 => 'unseptuagintillion',
                222 => 'duoseptuagintillion',
                225 => 'treseptuagintillion',
                228 => 'quattuorseptuagintillion',
                231 => 'quinseptuagintillion',
                234 => 'sexseptuagintillion',
                237 => 'septenseptuagintillion',
                240 => 'octoseptuagintillion',
                243 => 'novemseptuagintillion',
                246 => 'octogintillion',
                249 => 'unoctogintillion',
                252 => 'duooctogintillion',
                255 => 'treoctogintillion',
                258 => 'quattuoroctogintillion',
                261 => 'quinoctogintillion',
                264 => 'sexoctogintillion',
                267 => 'septenoctogintillion',
                270 => 'octooctogintillion',
                273 => 'novemoctogintillion',
                276 => 'nonagintillion',
                279 => 'unnonagintillion',
                282 => 'duononagintillion',
                285 => 'trenonagintillion',
                288 => 'quattuornonagintillion',
                291 => 'quinnonagintillion',
                294 => 'sexnonagintillion',
                297 => 'septennonagintillion',
                300 => 'octononagintillion',
                303 => 'novemnonagintillion',
                306 => 'centillion',
            );
        }
        public static function longform($number = string, $commas = true)
        {
            $negative = substr($number, 0, 1) == '-' ? 'negative ' : '';
            list($number) = explode('.', $number);          
            $number = trim(preg_replace("/[^0-9]/u", "", $number));
            $number = (string)(ltrim($number,'0'));
            if(empty($number)) return 'zero';
            $length = strlen($number);
            if($length <  2) return $negative.self::ones($number);
            if($length <  3) return $negative.self::tens($number);
            if($length <  4) return $commas ? $negative.str_replace('hundred ', 'hundred and ', self::hundreds($number)) : $negative.self::hundreds($number);
            if($length < 307) 
            {
                self::$map = self::map();
                self::$strings = self::strings();
                $result = self::beyond($number, self::$map[$length]);
                if(!$commas) return $negative.$result;
                $strings = self::$strings;
                $thousand = array_shift($strings);
                foreach($strings as $string) $result = str_replace($string.' ', $string.', ', $result);
                if(strpos($result, 'thousand') !== false) list($junk,$remainder) = explode('thousand', $result);
                else $remainder = $result;
                return strpos($remainder, 'hundred') !== false ? $negative.str_replace('thousand ', 'thousand, ', $result) : $negative.str_replace('thousand ', 'thousand and ', $result);
            }
            return 'a '.$negative.'number too big for your britches';
        }
        private static function ones($number)
        {
            $ones = array('zero','one','two','three','four','five','six','seven','eight','nine');
            return $ones[$number];
        }
        private static function tens($number)
        {
            $number = (string)(ltrim($number,'0'));
            if(strlen($number) < 2) return self::ones($number);
            if($number < 20)
            {
                $teens = array('ten','eleven','twelve','thirteen','fourteen','fifteen','sixteen','seventeen','eighteen','nineteen');
                return $teens[($number-10)];
            }
            else
            {
                $tens = array('','','twenty','thirty','forty','fifty','sixty','seventy','eighty','ninety');
                $word = $tens[$number[0]];
                return empty($number[1]) ? $word : $word.'-'.self::ones($number[1]);
            }
        }
        private static function hundreds($number)
        {
            $number = (string)(ltrim($number,'0'));
            if(strlen($number) < 3) return self::tens($number);
            $word = self::ones($number[0]).' hundred';
            $remainder = substr($number, -2);
            if(ltrim($remainder,'0') != '') $word .= ' '.self::tens($remainder);
            return $word;
        }
        private static function beyond($number, $limit)
        {
            $number = (string)(ltrim($number,'0'));
            $length = strlen($number);
            if($length < 4) return self::hundreds($number);
            if($length < ($limit-2)) return self::beyond($number, self::$map[($limit-3)]);
            if($length == $limit) $word = self::hundreds(substr($number, 0, 3), true);
            elseif($length == ($limit-1)) $word = self::tens(substr($number, 0, 2));
            else $word = self::ones($number[0]);
            $word .= ' '.self::$strings[$limit];
            $sub = ($limit-3);
            $remainder = substr($number, -$sub);
            if(ltrim($remainder,'0') != '') $word .= ' '.self::beyond($remainder, self::$map[$sub]);
            return $word;
        }
        public static function numberformat($number, $fixed = 0, $dec = '.', $thou = ',')
        {
            $negative = substr($number, 0, 1) == '-' ? '-' : '';
            $number = trim(preg_replace("/[^0-9\.]/u", "", $number));
            $number = (string)(ltrim($number,'0'));
            $fixed = (int)$fixed;
            if(!is_numeric($fixed)) $fixed = 0;
            if(strpos($number, $dec) !== false) list($number,$decimals) = explode($dec, $number); 
            else $decimals = '0';
            if($fixed) $decimals = '.'.str_pad(substr($decimals, 0, $fixed), $fixed, 0, STR_PAD_RIGHT);
            else $decimals = '';
            $thousands = array_map('strrev', array_reverse(str_split(strrev($number), 3)));
            return $negative.implode($thou,$thousands).$decimals;
        }
    }
    

是的。没有使用图书馆你只需要遵循这个..

首先,如果在 php.ini 中启用了; extension = php_intl.dll ,则需要检查服务器,如果仍然无法正常工作,则需要查看此答案。

带有wamp的intl扩展名php_intl.dll

成功移动所有文件后

icu 开始。

from:&lt; wamp_installation_path&gt; /bin/php/php5.4.3 /

to:&lt; wamp_installation_path&gt; /bin/apache/apache2.2.22/bin /

然后重新启动服务器。

尝试运行此代码:

$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
echo $f->format(123456);

它将显示 的输出为132,254,53

希望能帮助每个人:)。

我使用递归函数生成了它。

$wordnum = numberToWord($number);
echo $wordnum."<BR>";

function singledigit($number){
        switch($number){
            case 0:$word = "zero";break;
            case 1:$word = "One";break;
            case 2:$word = "two";break;
            case 3:$word = "three";break;
            case 4:$word = "Four";break;
            case 5:$word = "Five";break;
            case 6:$word = "Six";break;
            case 7:$word = "Seven";break;
            case 8:$word = "Eight";break;
            case 9:$word = "Nine";break;
        }
        return $word;
    }

    function doubledigitnumber($number){
        if($number == 0){
            $word = "";
        }
        else{
            $word = singledigit($number);
        }       
        return $word;
    }

    function doubledigit($number){
        switch($number[0]){
            case 0:$word = doubledigitnumber($number[1]);break;
            case 1:
                switch($number[1]){
                    case 0:$word = "Ten";break;
                    case 1:$word = "Eleven";break;
                    case 2:$word = "Twelve";break;
                    case 3:$word = "Thirteen";break;
                    case 4:$word = "Fourteen";break;
                    case 5:$word = "Fifteen";break;
                    case 6:$word = "Sixteen";break;
                    case 7:$word = "Seventeen";break;
                    case 8:$word = "Eighteen";break;
                    case 9:$word = "Ninteen";break;
                }break;
            case 2:$word = "Twenty".doubledigitnumber($number[1]);break;                
            case 3:$word = "Thirty".doubledigitnumber($number[1]);break;
            case 4:$word = "Forty".doubledigitnumber($number[1]);break;
            case 5:$word = "Fifty".doubledigitnumber($number[1]);break;
            case 6:$word = "Sixty".doubledigitnumber($number[1]);break;
            case 7:$word = "Seventy".doubledigitnumber($number[1]);break;
            case 8:$word = "Eighty".doubledigitnumber($number[1]);break;
            case 9:$word = "Ninety".doubledigitnumber($number[1]);break;

        }
        return $word;
    }

    function unitdigit($numberlen,$number){
        switch($numberlen){         
            case 3:$word = "Hundred";break;
            case 4:$word = "Thousand";break;
            case 5:$word = "Thousand";break;
            case 6:$word = "Lakh";break;
            case 7:$word = "Lakh";break;
            case 8:$word = "Crore";break;
            case 9:$word = "Crore";break;

        }
        return $word;
    }

    function numberToWord($number){

        $numberlength = strlen($number);
        if ($numberlength == 1) { 
            return singledigit($number);
        }elseif ($numberlength == 2) {
            return doubledigit($number);
        }
        else {

            $word = "";
            $wordin = "";

            if($numberlength == 9){
                if($number[0] >0){
                    $unitdigit = unitdigit($numberlength,$number[0]);
                    $word = doubledigit($number[0].$number[1]) ." ".$unitdigit." ";
                    return $word." ".numberToWord(substr($number,2));
                }
                else{
                    return $word." ".numberToWord(substr($number,1));
                }
            }

            if($numberlength == 7){
                if($number[0] >0){
                    $unitdigit = unitdigit($numberlength,$number[0]);
                    $word = doubledigit($number[0].$number[1]) ." ".$unitdigit." ";
                    return $word." ".numberToWord(substr($number,2));
                }
                else{
                    return $word." ".numberToWord(substr($number,1));
                }

            }

            if($numberlength == 5){
                if($number[0] >0){
                    $unitdigit = unitdigit($numberlength,$number[0]);
                    $word = doubledigit($number[0].$number[1]) ." ".$unitdigit." ";
                    return $word." ".numberToWord(substr($number,2));
                }
                else{
                    return $word." ".numberToWord(substr($number,1));
                }


            }
            else{
                if($number[0] >0){
                    $unitdigit = unitdigit($numberlength,$number[0]);
                    $word = singledigit($number[0]) ." ".$unitdigit." ";
                }               
                return $word." ".numberToWord(substr($number,1));
            }
        }
    }
Amount in Words:</b><?=no_to_words($number)?>

使用PHP函数将数字转换为单词的非常简单的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top