PHP 金额数字转换成英文

 更新时间:2010年05月06日 22:56:34   作者:  
找了很久,搜索的关键词总是词不达意似的。
复制代码 代码如下:

<?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;
}
?>

相关文章

  • Windows7下的php环境配置教程

    Windows7下的php环境配置教程

    这篇文章主要介绍了Windows7下的php环境配置教程,本文讲解了Windows7下的PHP环境配置步骤,包含下载安装文件、配置PHP、添加到系统变量和检测安装是否成功等步骤,需要的朋友可以参考下
    2015-02-02
  • Cygwin中安装PHP方法步骤

    Cygwin中安装PHP方法步骤

    这篇文章主要介绍了Cygwin中安装PHP方法步骤,本文共用3步完了PHP的安装,相对来说挺简单的,需要的朋友可以参考下
    2015-07-07
  • 深入PHP许愿墙模块功能分析

    深入PHP许愿墙模块功能分析

    本篇文章是对PHP实现许愿墙的模块功能进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP cron中的批处理

    PHP cron中的批处理

    如果 Web 应用程序中的一个特性需要超过 1 秒或 2 秒才能完成,那么应该怎么办?需要某种离线处理解决方案。学习几种对 PHP 应用程序中长时间运行的作业进行离线服务的方法。
    2008-09-09
  • 详解PHP的Yii框架中扩展的安装与使用

    详解PHP的Yii框架中扩展的安装与使用

    这篇文章主要介绍了PHP的Yii框架中扩展的安装与使用,文中列出了Yii中的一些核心扩展,需要的朋友可以参考下
    2016-04-04
  • PHP Squid中可缓存的动态网页设计

    PHP Squid中可缓存的动态网页设计

    有时我们需要控制主页之类的网页过期时间.但我们比如使用的是Chinacache的CDN,那要怎么样设计才能让他缓存我的内容.
    2008-09-09
  • 一款简单实用的php操作mysql数据库类

    一款简单实用的php操作mysql数据库类

    这篇文章主要介绍了一款简单实用的php操作mysql数据库类,不但包含了php针对mysql数据库的常见操作之外,还有针对危险字符的过滤功能,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • php自动跳转中英文页面

    php自动跳转中英文页面

    当来访者浏览器语言是中文就进入中文版面 国外的用户默认浏览器不是中文的就跳转英文页面
    2008-07-07
  • php解析http获取的json字符串变量总是空白null

    php解析http获取的json字符串变量总是空白null

    这篇文章主要介绍了php解析http获取的json字符串变量总是空白null的解决方法,个人经验的总结,这里推荐给大家。
    2015-03-03
  • 用php实现的下载css文件中的图片的代码

    用php实现的下载css文件中的图片的代码

    非常有创意的利用php获取css中图片地址并实现下载的代码。
    2010-02-02

最新评论