rt:将数值(千亿以下)转换为大写人民币.用PHP实现。PHPer 快啊
------解决方案--------------------
http://www.phparticle.net/htmldata/2268/1/
------解决方案--------------------
- PHP code
<? error_reporting(2047);#报告所有非法的错误 ob_start(); function RMB ($RMB=0,$Format='') { /* Function : 小写金额转换大写金额 支持元角分厘毫 的PHP函数 Author : 纯粹误会 zh5j.com QQ:44922032 Time : 2005-5-18 Parameters : $RMB是小写金额,$Format是返回格式化后的的小写金额 Usage : $RMB=RMB("1255888","money");echo $RMB; echo $money; Thanks : 奶瓶、石头、ej99 */ $RMB=@preg_Replace( array('/([, ]|¥|0$|)/','/(.){2,}/'), array('','.'), $RMB); if(eregi("[^0-9.]",$RMB))return "非法金额"; if($RMB==0)return "零元整"; elseif($RMB>pow(10,12))return "金额必须小于千亿"; $re = ''; $arr1 = array('零','壹','贰','叁','肆','伍','陆','柒','捌','玖'); $arr2 = array('元','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟'); $arr3 = array('角','分','厘','毫'); $pre1 = count($arr2); #单位精确度 precision $pre2 = count($arr3); #小数位精确度 precision $arr = @explode(".",$RMB);#按小数点切割金额 $len1 = @strlen($arr[0]); #整数位长度 $len2 = @strlen($arr[1]); #小数位长度 for($i=0; $i<$len1 && $i<$pre1; $i++) { $bit =$arr[0][$len1-$i-1]; #当前位小写金额 $cn =$arr1[$bit]; #当前位大写金额 $unit =$arr2[$i]; #当前位金额单位 #小写金额为零的情况 if($bit==0) { if(ereg('元|万|亿',$unit))$re=$unit.$re; else $re=$cn.$re; } #小写金额非零的情况 else { $re=$cn.$unit.$re; } } for($i=0; $i< count($arr3) && $i<$len2; $i++){ $bit =$arr[1][$i]; #当前位小写金额 $cn =$arr1[$bit]; #当前位大写金额 $unit =$arr3[$i]; #当前位金额单位 if($bit!=0) $re .=$cn.$unit; elseif($i<2) $re .="零"; } if($Format){#格式化小写金额 #精确位数。不小于2,不大于最大精确度的小数位数 $gage =min(max(2,$len2),$pre2); $GLOBALS[$Format]=number_format($RMB,$gage, ".", ","); } $re=preg_replace( array("/亿万/", "/(零)$/", "/(零){2,}/"), array("亿", "", "零"), $re); #正则替换 if(!$len2)$re.="整"; #当没有小数位时加上“整” return $re; } //////////////////////////// RMB('11111111'); $money=isset($_GET['money'])?$_GET['money']:""; $RMB=RMB($money,"money"); ?>