PHP
发布时间:2019-11-18 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP 金额数字转换成英文,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
<div class="codetitle"><a style="cursOR: pointer" data="86512" class="copybut" id="copybut86512" onclick="doCopy('code86512')"> 代码如下:
<div class="codebody" id="code86512">
<?
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 ==".")
{ $numArra
Y[$j--] = $one_num;
$k
=0;
con
Tinue;
} if($k%3=
=0 and $i!
=0)
{ //如果正好只剩下3个数字,则不加','
$numArra
Y[$j--] = $one_num;
$numArra
Y[$j--] = ",";
$k
=0;
} else
{ $numArra
Y[$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[1
5]="FIFTEEN ";
$numTable[1
6]="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 = $numArra
Y[$i];
//echo "
";
//小数位的处理400.21
if(eregi(".",$num_str))
{ $dotArray = explode(".",$num_str
); if($dotArra
Y[1]
!= 0)
{ $resultArra
Y[$k++]=format3num($dotArray
[0]+0
); $resultArra
Y[$k++]=$moneyType[strtolower($typ
E)];
$resultArra
Y[$k++]="AND ";
$resultArra
Y[$k++]=format3num($dotArra
Y[1]+0
); $resultArra
Y[$k++]=$moneyType[strtolower($typ
E)."_1"];
} else
{ $resultArra
Y[$k++]=format3num($dotArray
[0]+0
); $resultArra
Y[$k++]=$moneyType[strtolower($typ
E)];
}
} else
{ //非小数位的处理
if(($num_str+0)!
=0)
{ $resultArra
Y[$k++]=format3num($num_str+0
); $resultArra
Y[$k++]=$commaTable[--$cc];
//判断:除小数外其余若不为零则加and
for($j=$i; $j <= $c
c; $j++)
{ //echo "
";
//echo $numArra
Y[$j];
if($numArra
Y[$j] !
=0)
{ $resultArra
Y[$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,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;
}
?>