php+中文数字转英文,PHP 金额数字转换成英文

PHP 金额数字转换成英文

复制代码 代码如下:

$num=1220.01;

echo fmoney($num);//结果:1,220.21

echo umoney($num);

//结果:ONE THOUSAND AND TWO HUNDRED TWENTY DOLLARS AND TWENTY-ONE CENTS ONLY

echo umoney($num,"rmb");

//结果: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个数它加一个","

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个数字,则不加','

$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 "
";

//小数位的处理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 {

//非小数位的处理

if(($num_str+0)!=0) {

$resultArray[$k++]=format3num($num_str+0);

$resultArray[$k++]=$commaTable[--$cc];

//判断:除小数外其余若不为零则加and

for($j=$i; $j <= $cc; $j++) {

//echo "
";

//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]];

}

}

//第一个不可能为零

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;

}

?>相关阅读:

js 加载并解析XML字符串

Javascript判断函数类型

Oracle中文乱码的解决方法

PHP变量作用域

SQL修改Access表结构

ASP与存储过程实例实践

PHP的ODBC分页代码

用JQUERY增删元素的代码

MySQL日期函数和时间函数大全

javascript 脚本函数

MySQL之数据表SQL操作教程

oracle常见异常及解决方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值