php将数字转换人民币显示,将数值(千亿以下)转换为大写人民币解决办法

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

{

$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

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

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值