PHP 金額數(shù)字轉(zhuǎn)換成英文
更新時(shí)間:2010年05月06日 22:56:34 作者:
找了很久,搜索的關(guān)鍵詞總是詞不達(dá)意似的。
復(fù)制代碼 代碼如下:
<?php
$num=1220.01;
echo fmoney($num);//結(jié)果:1,220.21
echo umoney($num);
//結(jié)果:ONE THOUSAND AND TWO HUNDRED TWENTY DOLLARS AND TWENTY-ONE CENTS ONLY
echo umoney($num,"rmb");
//結(jié)果:ONE THOUSAND AND TWO HUNDRED TWENTY YUAN AND TWENTY-ONE FEN ONLY
//define
//格式化貨幣
function fmoney($num) {
$num=0+$num;
$num = sprintf("%.02f",$num);
if(strlen($num) <= 6) return $num;
//從最后開始算起,每3個(gè)數(shù)它加一個(gè)","
for($i=strlen($num)-1,$k=1, $j=100; $i >= 0; $i--,$k++) {
$one_num = substr($num,$i,1);
if($one_num ==".") {
$numArray[$j--] = $one_num;
$k=0;
continue;
}
if($k%3==0 and $i!=0) {
//如果正好只剩下3個(gè)數(shù)字,則不加','
$numArray[$j--] = $one_num;
$numArray[$j--] = ",";
$k=0;
} else {
$numArray[$j--]=$one_num;
}
}
ksort($numArray);
return join("",$numArray);
}
function umoney($num,$type="usd") {
global $numTable,$commaTable,$moneyType;
//global $numTable;
$numTable[0]="ZERO ";
$numTable[1]="ONE ";
$numTable[2]="TWO ";
$numTable[3]="THREE ";
$numTable[4]="FOUR ";
$numTable[5]="FIVE ";
$numTable[6]="SIX ";
$numTable[7]="SEVEN ";
$numTable[8]="EIGHT ";
$numTable[9]="NINE ";
$numTable[10]="TEN ";
$numTable[11]="ELEVEN ";
$numTable[12]="TWELVE ";
$numTable[13]="THIRTEEN ";
$numTable[14]="FOURTEEN ";
$numTable[15]="FIFTEEN ";
$numTable[16]="SIXTEEN ";
$numTable[17]="SEVENTEEN ";
$numTable[18]="EIGHTEEN ";
$numTable[19]="NINETEEN ";
$numTable[20]="TWENTY ";
$numTable[30]="THIRTY ";
$numTable[40]="FORTY ";
$numTable[50]="FIFTY ";
$numTable[60]="SIXTY ";
$numTable[70]="SEVENTY ";
$numTable[80]="EIGHTY ";
$numTable[90]="NINETY ";
$commaTable[0]="HUNDRED ";
$commaTable[1]="THOUSAND ";
$commaTable[2]="MILLION ";
$commaTable[3]="MILLIARD ";
$commaTable[4]="BILLION ";
$commaTable[5]="????? ";
//單位
$moneyType["usd"]="DOLLARS ";
$moneyType["usd_1"]="CENTS ONLY";
$moneyType["rmb"]="YUAN ";
$moneyType["rmb_1"]="FEN ONLY";
if($type=="") $type="usd";
$fnum = fmoney($num);
$numArray = explode(",",$fnum);
$resultArray = array();
$k=0;
$cc=count($numArray);
for($i = 0; $i < count($numArray); $i++) {
$num_str = $numArray[$i];
//echo "<br>";
//小數(shù)位的處理400.21
if(eregi("\.",$num_str)) {
$dotArray = explode(".",$num_str);
if($dotArray[1] != 0) {
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$k++]=$moneyType[strtolower($type)];
$resultArray[$k++]="AND ";
$resultArray[$k++]=format3num($dotArray[1]+0);
$resultArray[$k++]=$moneyType[strtolower($type)."_1"];
} else {
$resultArray[$k++]=format3num($dotArray[0]+0);
$resultArray[$k++]=$moneyType[strtolower($type)];
}
} else {
//非小數(shù)位的處理
if(($num_str+0)!=0) {
$resultArray[$k++]=format3num($num_str+0);
$resultArray[$k++]=$commaTable[--$cc];
//判斷:除小數(shù)外其余若不為零則加and
for($j=$i; $j <= $cc; $j++) {
//echo "<br>";
//echo $numArray[$j];
if($numArray[$j] !=0) {
$resultArray[$k++]="AND ";
break;
}
}
}
}
}
return join("",$resultArray);
}
function format3num($num) {
global $numTable,$commaTable;
$numlen = strlen($num);
for($i = 0,$j = 0;$i < $numlen; $i++) {
$bitenum[$j++] = substr($num,$i,1);
}
if($num==0) return "";
if($numlen == 1) return $numTable[$num];
if($numlen == 2) {
if($num <= 20) return $numTable[$num];
//第一位不可能零
if($bitenum[1]==0) {
return $numTable[$num];
} else {
return trim($numTable[$bitenum[0]*10])."-".$numTable[$bitenum[1]];
}
}
//第一個(gè)不可能為零
if($numlen == 3) {
if($bitenum[1]==0 && $bitenum[2]==0) {
//100
return $numTable[$bitenum[0]].$commaTable[0];
} elseif($bitenum[1]==0) {
//102
return $numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[2]];
} elseif ($bitenum[2]==0) {
//120
return $numTable[$bitenum[0]].$commaTable[0].$numTable[$bitenum[1]*10];
} else {
//123
return $numTable[$bitenum[0]].$commaTable[0].trim($numTable[$bitenum[1]*10])."-".$numTable[$bitenum[2]];
}
}
return $num;
}
?>
您可能感興趣的文章:
- PHP實(shí)現(xiàn)十進(jìn)制數(shù)字與二十六進(jìn)制字母串相互轉(zhuǎn)換操作示例
- php使用json_decode后數(shù)字對(duì)象轉(zhuǎn)換成了科學(xué)計(jì)數(shù)法的解決方法
- php 把數(shù)字轉(zhuǎn)換成漢字的代碼
- php實(shí)現(xiàn)阿拉伯?dāng)?shù)字和羅馬數(shù)字相互轉(zhuǎn)換的方法
- php短網(wǎng)址和數(shù)字之間相互轉(zhuǎn)換的方法
- PHP實(shí)現(xiàn)將科學(xué)計(jì)數(shù)法轉(zhuǎn)換為原始數(shù)字字符串的方法
- php中base_convert()進(jìn)制數(shù)字轉(zhuǎn)換函數(shù)實(shí)例
- PHP中IP地址與整型數(shù)字互相轉(zhuǎn)換詳解
- php導(dǎo)出csv格式數(shù)據(jù)并將數(shù)字轉(zhuǎn)換成文本的思路以及代碼分享
- PHP數(shù)字金額轉(zhuǎn)換成中文大寫顯示
相關(guān)文章
NOD32 v2.70.32 簡(jiǎn)體中文封裝版 提供下載了
NOD32 v2.70.32 簡(jiǎn)體中文封裝版 提供下載了...2007-02-02php和js如何通過(guò)json互相傳遞數(shù)據(jù)相關(guān)問(wèn)題探討
json是js的一種數(shù)據(jù)格式,可以直接被js解析,php無(wú)法直接讀取json數(shù)據(jù),但是php提供了json_decode函數(shù)來(lái)對(duì)json數(shù)據(jù)進(jìn)行轉(zhuǎn)化,從而可以被php腳本訪問(wèn),今天,站長(zhǎng)就和大家一起來(lái)探討這個(gè)問(wèn)題,感興趣的你可以參考下哦2013-02-02php計(jì)算給定時(shí)間之前的函數(shù)用法實(shí)例
這篇文章主要介紹了php計(jì)算給定時(shí)間之前的函數(shù)用法,實(shí)例分析了php計(jì)算時(shí)間的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04php+MySQL判斷update語(yǔ)句是否執(zhí)行成功的方法
這篇文章主要介紹了php+MySQL判斷update語(yǔ)句是否執(zhí)行成功的方法,可以通過(guò)mysql_affected_rows方法加以實(shí)現(xiàn),需要的朋友可以參考下2014-08-08關(guān)于php支持分塊與斷點(diǎn)續(xù)傳文件下載功能代碼
一篇關(guān)于php流下載,就是可以支持分塊與斷點(diǎn)續(xù)傳文件下載,有需要的朋友可以看看2014-05-05php自動(dòng)給文章加關(guān)鍵詞鏈接的函數(shù)代碼
自動(dòng)給文章加關(guān)鍵詞鏈接的php函數(shù)代碼,需要的朋友可以參考下2012-11-11