PHP 金额数字转换成英文


Posted in PHP onMay 06, 2010
<?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 相关文章推荐
多文件上载系统完整版
Oct 09 PHP
十天学会php之第一天
Oct 09 PHP
PHP 类商品秒杀计时实现代码
May 05 PHP
PHP 透明水印生成代码
Aug 27 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
Destoon模板制作简明教程
Jun 20 PHP
ThinkPHP分组下自定义标签库实例
Nov 01 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
[原创]php正则删除img标签的方法示例
May 27 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
May 06 #PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 #PHP
PHP 类商品秒杀计时实现代码
May 05 #PHP
PHP 面向对象 final类与final方法
May 05 #PHP
PHP 面向对象 PHP5 中的常量
May 05 #PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 #PHP
一些被忽视的PHP函数(简单整理)
Apr 30 #PHP
You might like
提升PHP执行速度全攻略(上)
2006/10/09 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
浅谈Node.js 沙箱环境
2018/05/15 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
2018/08/15 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
Python for循环生成列表的实例
2018/06/15 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python队列Queue的详解
2019/05/10 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
python 带时区的日期格式化操作
2020/10/23 Python
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
机关领导查摆四风思想汇报
2014/09/13 职场文书
2014年预算员工作总结
2014/12/05 职场文书
Go语言grpc和protobuf
2022/04/13 Golang