php 金额转大写,php实现将人民币金额转大写的办法

工作中偶尔会碰到需要将人民币金额,也即阿拉伯数字转化为大写汉字的这种情况,下面是作者经过实践总结出来的方法,特此记录以防备忘。

class Num2Cny{

static $basical=array(0=>'零','壹','贰','叁','肆','伍','陆','柒','捌','玖');

static $advanced=array(1=>'拾','佰','仟');

public static function ParseNumber($number){

$number=trim($number);

if(!is_numeric($number)||intval($number)>999999999999) return 'error';

if($number==0) return '零';

if(strpos($number,'.')){

$number=round($number,2);

$data=explode('.',$number);

$data[0]=self::int($data[0]);

$data[1]=self::dec($data[1]);

return $data[0].$data[1];

}else{

return self::int($number).'整';

}

}

public static function int($number){

$arr=array_reverse(str_split($number));

$data='';

$zero=false;

$zero_num=0;

foreach($arr as $k=>$v){

$_chinese='';

$zero=($v==0)?true:false;

$x=$k%4;

if($x && $zero && $zero_num>1)continue;

switch($x){

case 0:

if($zero){

$zero_num=0;

}else{

$_chinese=self::$basical[$v];

$zero_num=1;

}

if($k==8){

$_chinese.='亿';

}elseif($k==4){

$_chinese.='万';

}

break;

default:

if($zero){

if($zero_num==1){

$_chinese=self::$basical[$v];

$zero_num++;

}

}else{

$_chinese=self::$basical[$v];

$_chinese.=self::$advanced[$x];

}

}

$data=$_chinese.$data;

}

return $data.'元';

}

public static function dec($number){

if(strlen($number)<2) $number.='0';

$arr=array_reverse(str_split($number));

$data='';

$zero_num=false;

foreach($arr as $k=>$v){

$zero=($v==0)?true:false;

$_chinese='';

if($k==0){

if(!$zero){

$_chinese=self::$basical[$v];

$_chinese.='分';

$zero_num=true;

}

}else{

if($zero){

if($zero_num){

$_chinese=self::$basical[$v];

}

}else{

$_chinese=self::$basical[$v];

$_chinese.='角';

}

}

$data=$_chinese.$data;

}

return $data;

}

}

使用过程也很简单,如下:

echo Num2Cny::ParseNumber(1234567.5);//www.phpernote.com

结果将输出:

壹佰贰拾叁万肆仟伍佰陆拾柒元伍角

另外说明一下的是如果仅需要将阿拉伯数字转化为大写的情况下,可参照本站文章:

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值