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 XML备份Mysql数据库
May 27 PHP
基于php无限分类的深入理解
Jun 02 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
php绘制一条直线的方法
Jan 24 PHP
php开发中的页面跳转方法总结
Apr 26 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
php array_intersect()函数使用代码
2009/01/14 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
在Python的Django框架中编写编译函数
2015/07/20 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python放大图片和画方格实现算法
2018/03/30 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
治安消防安全责任书
2014/07/23 职场文书