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");
?>