PHP 金额数字转换成英文

2015-01-24信息快讯网

找了很久,搜索的关键词总是词不达意似的。

<?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表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
php中使用Curl、socket、file_get_contents三种方法POST提交数据
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
php的urlencode()URL编码函数浅析
linux下使用ThinkPHP需要注意大小写导致的问题
linux下为php添加curl扩展的方法
PHP 数据结构 算法描述 冒泡排序 bubble sort
php守护进程 加linux命令nohup实现任务每秒执行一次
mysql_num_rows VS COUNT 效率问题分析
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
PHP5中使用DOM控制XML实现代码
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
PHP中冒号、endif、endwhile、endfor使用介绍
PHP执行linux系统命令的常用函数使用说明
php file_get_contents函数轻松采集html数据
用PHP获取Google AJAX Search API 数据的代码
PHP clearstatcache()函数详解
Linux下将excel数据导入到mssql数据库中的方法
PHP XML操作类DOMDocument
PHP Document 代码注释规范
linux php mysql数据库备份实现代码
Google PR查询接口checksum新算法第1/2页
PDP Document 代码注释规范第1/2页
linux下 C语言对 php 扩展
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
什么是phpDocumentor第1/2页
©2014-2024 dbsqp.com