微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php 怎么将数字转换成英文

PHP将数字转换成英文的方法:1、创建一个PHP示例文件;2、通过“function umoney($num,$type=usd) {...}”方法将数字转换成英文即可。

本文操作环境:Windows7系统,PHP7.4版,Dell G3电脑。

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 <br>;
//小数位的处理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 <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]];
}
}
//第一个不可能为零
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教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐