如何编写PHP程序将人民币金额转换为大写金额的代码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计381个文字,预计阅读时间需要2分钟。
php/** * 将数字转换为中文大写金额格式 * Class Ext_Num2Cny */class Ext_Num2Cny{ static $basical=array( 零, 壹, 贰, 叁, 肆, 伍, 陆, 柒, 捌, 玖 ); static $advanced=array( 拾, 佰, 仟, 万, 拾, 佰, 仟, 亿 );
public static function ParseNumber($number) { $number=trim($number); $number=str_replace(',', '', $number); $number=str_replace('.', '', $number); $number=abs(intval($number)); $cny=''; $zero='零'; $len=strlen($number); for ($i=0; $i 0 && $cny[0]=='零') { $cny=substr($cny, 1); } if (strlen($cny) > 0 && $cny[strlen($cny) - 1]=='零') { $cny=substr($cny, 0, -1); } if (strlen($cny)==0) { $cny='零元整'; } elseif (substr($cny, -1)=='万') { $cny .='元'; } else { $cny .='元整'; } return $cny; }}
// 人民币金额转大写程序 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; } } echo Ext_Num2Cny::ParseNumber(238956.23);
本文共计381个文字,预计阅读时间需要2分钟。
php/** * 将数字转换为中文大写金额格式 * Class Ext_Num2Cny */class Ext_Num2Cny{ static $basical=array( 零, 壹, 贰, 叁, 肆, 伍, 陆, 柒, 捌, 玖 ); static $advanced=array( 拾, 佰, 仟, 万, 拾, 佰, 仟, 亿 );
public static function ParseNumber($number) { $number=trim($number); $number=str_replace(',', '', $number); $number=str_replace('.', '', $number); $number=abs(intval($number)); $cny=''; $zero='零'; $len=strlen($number); for ($i=0; $i 0 && $cny[0]=='零') { $cny=substr($cny, 1); } if (strlen($cny) > 0 && $cny[strlen($cny) - 1]=='零') { $cny=substr($cny, 0, -1); } if (strlen($cny)==0) { $cny='零元整'; } elseif (substr($cny, -1)=='万') { $cny .='元'; } else { $cny .='元整'; } return $cny; }}
// 人民币金额转大写程序 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; } } echo Ext_Num2Cny::ParseNumber(238956.23);

