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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
PHP中一个控制字符串输出的函数
Oct 09 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
PHP文件上传原理简单分析
May 29 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
php循环table实现一行两列显示的方法
Jun 04 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
PHP处理bmp格式图片的方法分析
Jul 04 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
PHP数组与字符串互相转换实例
May 05 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中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
JS实现点击下载的小例子
2013/07/10 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
Javascript中设置默认参数值示例
2014/09/11 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
layui表格实现代码
2017/05/20 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
python实现将英文单词表示的数字转换成阿拉伯数字的方法
2015/07/02 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
解决pytorch DataLoader num_workers出现的问题
2020/01/14 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
通过实例解析Python return运行原理
2020/03/04 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
教师绩效工资方案
2014/02/01 职场文书
个人租房协议书样本
2014/10/01 职场文书
优秀护士事迹材料
2014/12/25 职场文书
党员转正介绍人意见
2015/06/03 职场文书
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL