PHP人民币金额转大写,其实质就是数字转换成中文大写,测试了一下,非常有趣,随便输个数字,就可以将其大写打印出来,初学的朋友们试一下吧
//PHP人民币金额转大写class Ext_Num2Cny{static $basical = array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖");static $advanced=array(1=>"拾","佰","仟"); public static function ParseNumber($number){ $number=trim($number); if ($number>999999999999) return "数字太大,无法处理。抱歉!"; 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;} } //使用方法$nun = new Ext_Num2Cny(); echo Ext_Num2Cny::ParseNumber(1234567.5); 结果:壹佰贰拾叁万肆仟伍佰陆拾柒元伍角
希望本文对大家学习php编程有所帮助,