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 相关文章推荐
PHP stristr() 函数(不区分大小写的字符串查找)
Jun 03 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
一个严格的PHP Session会话超时时间设置方法
Jun 10 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
php + WebUploader实现图片批量上传功能
May 06 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 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的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
python模拟enum枚举类型的方法小结
2015/04/30 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
django中media媒体路径设置的步骤
2019/11/15 Python
python logging通过json文件配置的步骤
2020/04/27 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
缓解脚、腿和背部疼痛:Z-CoiL鞋
2019/03/12 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
大学生就业自荐信
2013/10/26 职场文书
市场部专员岗位职责
2013/11/30 职场文书
酒店司机岗位职责
2013/12/14 职场文书
小学音乐教学反思
2014/02/05 职场文书
《雷雨》教学反思
2014/02/20 职场文书
感恩节寄语2015
2015/03/24 职场文书
升职自我推荐信范文
2015/03/25 职场文书
React中的Context应用场景分析
2021/06/11 Javascript
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang