在PHP中,是否有將數字轉換爲單詞的簡單方法?例如,至二十七。有沒有簡單的方法將數字轉換爲PHP中的單詞?
回答
我在網上found一些(2007/2008)的源代碼,並因爲它是版權,但我可以自由地使用它,但我想修改它,所以我在這裏把它和再許可下,CC-百科:
<?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";
}
}
有沒有我知道的內置方式,但如果你看看我的示例代碼this question(在C#中),它應該很容易讓你工作。基本上它只是解決變量的問題,並在適當的地方添加$
前綴,它應該可以工作。
PECL中有Numbers_Words
package。它完全符合你的要求。下列語言支持:
- BG(保加利亞)由Kouber Saparev
- CS(捷克)由彼得 '佩帕' 帕維爾
- 德(德國)由彼得·Klaban
- DK(丹麥)的加斯帕Veggerby
- en_100(高德納系統,英語)由彼得·Klaban
- EN_GB(英式英語),由彼得·Klaban
- EN_US英語(美國)的彼得·Klaban
- ES(西班牙卡斯特利亞諾)由Xavier Noguer
- es_AR(阿根廷西班牙語)由馬丁Marrese
- 等(愛沙尼亞)由埃爾基Saarniit
- fr(法語)由Kouber Saparev
- fr_BE(法國比利時)通過Kouber Saparev和Philippe Bajoit
- 他(希伯來文)由哈達爾波拉特
- hu_HU(匈牙利)由尼爾斯Homp
- ID(印尼)由Ernas M.賈米勒和阿里夫木黴Dwiyanto
- it_IT(意大利)由菲利波Beltramini和達維德Caironi
- LT(立陶宛)由Laurynas布特庫斯
- NL(荷蘭)的個唱麪包車Dinter
- PL(波蘭)由彼得·Klaban
- pt_BR表示(巴西葡萄牙語)Marcelo Subtil Marcal和Mario HCT
- RU(俄羅斯)由安德烈Demenev
- SV(瑞典)羅賓愛立信
或者,您可以在PHP中使用NumberFormatter類從intl
包。這裏有一個示例代碼來讓你開始(對於命令行):
<?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";
}
我已經使用遞歸函數生成了這個。
$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));
}
}
}
我想你的代碼$數= 123456789結果是十二億盧比ThirtyFour萬盧比FiftySix三千七百EightyNine。它應該是一百二十三百萬,四五六千元,七八九。 – Barmar 2012-10-02 02:22:14
維基百科:「一個億盧比在南亞編號系統等於十萬元單位」 - 我相信OP想在英語 – Muleskinner 2013-03-06 11:07:38
我重寫了上面的代碼以符合標準的美國書面文字數字格式。
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));
}
}
}
這裏有一個小的類,我寫在今晚。注意事項:
- 只有英文。
- 只處理美國/法國對數十億等的定義
longform
方法不處理小數。它只是抹去它們。如果您願意,可以隨意修改並添加該功能。numberformat
方法不會做小數點,但不做任何舍入。由於PHP整數大小的固有限制,我不得不創建一個新的numberformat
函數。我翻譯的數字非常大,當我用number_format()
檢查我的翻譯時,花了30分鐘才發現我的翻譯沒有錯,number_format
是。- 這不是關於該類的警告,而是關於PHP。 32位版本的PHP不會處理大於
2,147,483,647
(20億和更改)的整數。 64位版本將處理高達像9 quintillion
什麼的。但只要您將longform
方法的數字以string
的形式輸入,此處無關緊要。我從網絡表格中完成了一個306位數字,超過ajax
,只要我將它作爲''+number
傳遞給服務器即可。
所以,這個類將把數字翻譯到999 Centillion, 999 etc.
(例如,一個9個字符長度爲306個字符的字符串)。任何比這更大的數字,該函數只是返回一個愚蠢的消息。
用法:
$number = '999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999';
reallyBig::longform($number);
可選的第二個布爾參數默認爲true,這增加了逗號作爲最好的可以在適當的地方,以使號碼更易讀。
順便說一下,如果您希望它爲負數,則可以將-
放在前面,但輸入字符串中包含的任何其他字符將被刪除。例如:
reallyBig::longform('-C55LL-M5-4-a-9u7-71m3-M8');
將輸出:negative five billion, five hundred fifty-four million, nine hundred seventy-seven thousand, one hundred thirty-eight
的numberformat
方法是沒有必要的任何其它方法。如果你想檢查一個非常長的翻譯數字,那就在那裏。由於所有這些函數都以字符串形式處理數字,因此它們不會遇到PHP的限制。
我停在999釐米的唯一原因是因爲centillion是我在查看網站時的最後一個數字,當時我不記得十億分之後發生了什麼。
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;
}
}
我需要的是把「及」到返回字符串並格式化成一個句子的解決方案 - 通常是作爲一個人會說出來。所以我稍微修改了一個不同的解決方案 - 因爲我認爲這可能對某人有用。
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;
}
Amount in Words:</b><?=no_to_words($number)?>
很簡單的方式轉換成數字使用PHP函數的話。
- 1. 有沒有簡單的方法將C#類轉換爲PHP?
- 2. 有沒有簡單的方法將值轉換爲字符串?
- 3. 有沒有簡單的方法將標準轉換爲HQL?
- 4. 簡單的方法將數字轉換爲詞序
- 5. 有沒有簡單的方法將這些字符串值轉換爲枚舉?
- 6. C#:有沒有簡單的方法將字符串轉換爲RTF?
- 7. 有沒有簡單的方法將C++枚舉轉換爲字符串?
- 8. 在vb2005中有沒有簡單的將MP3轉換爲WAV的方法?
- 9. 在Javascript中將數字轉換爲帶有連字的單詞
- 10. 有沒有一種簡單的方法在JavaScript中將文本轉換爲HTML?
- 11. 有沒有簡單的方法將json編碼的數組轉換爲json編碼的對象的php數組?
- 12. 簡單的方法將字符串轉換爲數字或null?
- 13. 有沒有簡單的方法將HTTP_ACCEPT_LANGUAGE轉換爲Oracle NLS_LANG設置?
- 14. 有沒有更簡單的方法將毫秒轉換爲HH.MM(十進制)?
- 15. 有沒有簡單的方法將autocad多邊形轉換爲adobe swf格式?
- 16. 有沒有簡單的方法將常用文件轉換爲WordPress插件?
- 17. 有沒有簡單的方法可以將MySQL錶轉換爲Redis等價物?
- 18. 有沒有簡單的方法將MooTools代碼轉換爲JQuery代碼?
- 19. 將數字(貨幣)轉換爲單詞的方法
- 20. Django,Python:有沒有簡單的方法將PHP式的括號內POST鍵轉換爲多維字典?
- 21. 簡單的方法將所有int轉換爲char?
- 22. 將dbNull轉換爲VB.NET中的字符串的簡單方法
- 23. 將字節數組轉換爲JSONArray的簡單方法
- 24. 將Blob轉換爲字節數組的最簡單方法
- 25. 將數字轉換爲年和月的最簡單方法
- 26. 在VB2010中有沒有簡單的方法給單個單詞添加顏色?
- 27. 有沒有簡單的命令將分支轉換爲標籤?
- 28. 有沒有在PHP中將數字轉換爲書面版本的方法?
- 29. 有沒有一種簡單的方法來將我所有的字符串轉換爲對strings.xml的引用
- 30. 有沒有一種簡單的方法來將字符串轉換爲使用vbscript的數學表達式?
您可以建立一個功能落後讀取次數,並寫下文字,加入「hundreed」或取決於什麼樣的功能,目前的數字之前發現「tousend」。 – 2014-09-08 14:29:55