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 相关文章推荐
PHP5 面向对象(学习记录)
Dec 02 PHP
PHP 实用代码收集
Jan 22 PHP
php语言流程控制中的主动与被动
Nov 05 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
Jun 20 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
php从字符串创建函数的方法
Mar 16 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
Nov 14 PHP
Yii框架表单提交验证功能分析
Jan 07 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
php radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP排序算法类实例
2015/06/17 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
laravel 5.3 单用户登录简单实现方法
2019/10/14 PHP
强制设为首页代码
2006/06/19 Javascript
取得一定长度的内容,处理中文
2006/12/20 Javascript
JavaScript CSS 修改学习第四章 透明度设置
2010/02/19 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
在vue项目中使用sass语法问题
2019/07/18 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
Python标准库之Sys模块使用详解
2015/05/23 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
python numpy库np.percentile用法说明
2020/06/08 Python
详解python内置模块urllib
2020/09/09 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
adidas美国官网:adidas US
2016/09/21 全球购物
StubHub德国:购买和出售门票
2017/09/06 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
网络安全类面试题
2015/08/01 面试题
幼儿园亲子活动方案
2014/01/29 职场文书
委托书的写法
2014/08/30 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android