当前位置:首页 > PHP教程 > php应用 > 列表

PHP人民币金额转大写实例代码

发布:smiling 来源: PHP粉丝网  添加日期:2021-06-19 22:32:57 浏览: 评论:0 

一个非常有趣的PHP人民币金额数字转中文大写实例代码与大家分享,感兴趣的小伙伴可以参考一下。

PHP人民币金额转大写,其实质就是数字转换成中文大写,测试了一下,非常有趣,随便输个数字,就可以将其大写打印出来,初学的朋友们试一下吧。

  1. //PHP人民币金额转大写 
  2. class Ext_Num2Cny{  
  3.  static $basical = array(0=>"零","壹","贰","叁","肆","伍","陆","柒","捌","玖");  
  4.  static $advanced=array(1=>"拾","佰","仟");  
  5.    
  6.  public static function ParseNumber($number){  
  7.   $number=trim($number);  
  8.   if ($number>999999999999) return "数字太大,无法处理。抱歉!";  
  9.   if ($number==0) return "零";  
  10.   if(strpos($number,'.')){  
  11.    $number=round($number,2);  
  12.    $data=explode(".",$number);  
  13.    $data[0]=self::int($data[0]);  
  14.    $data[1]=self::dec($data[1]);  
  15.    return $data[0].$data[1];  
  16.   }else{  
  17.    return self::int($number).'整';  
  18.   }  
  19.  }  
  20.    
  21.  public static function int($number){  
  22.   $arr=array_reverse(str_split($number));  
  23.   $data='';  
  24.   $zero=false;  
  25.   $zero_num=0;  
  26.   foreach ($arr as $k=>$v){  
  27.    $_chinese='';  
  28.    $zero=($v==0)?true:false;  
  29.    $x=$k%4;  
  30.    if($x && $zero && $zero_num>1)continue;  
  31.    switch ($x){  
  32.     case 0:  
  33.      if($zero){  
  34.       $zero_num=0;  
  35.      }else{  
  36.       $_chinese=self::$basical[$v];  
  37.       $zero_num=1;  
  38.      }  
  39.      if($k==8){  
  40.       $_chinese.='亿';  
  41.      }elseif($k==4){  
  42.       $_chinese.='万';  
  43.      }  
  44.      break;   
  45.     default:  
  46.      if($zero){  
  47.       if($zero_num==1){  
  48.        $_chinese=self::$basical[$v];  
  49.        $zero_num++;  
  50.       }  
  51.      }else{  
  52.       $_chinese=self::$basical[$v];  
  53.       $_chinese.=self::$advanced[$x];  
  54.      }  
  55.    }  
  56.    $data=$_chinese.$data;  
  57.   }  
  58.   return $data.'元';  
  59.  }  
  60.     
  61.  public static function dec($number){  
  62.   if(strlen($number)<2) $number.='0';  
  63.   $arr=array_reverse(str_split($number));  
  64.   $data='';  
  65.   $zero_num=false;  
  66.   foreach ($arr as $k=>$v){  
  67.    $zero=($v==0)?true:false;  
  68.    $_chinese='';  
  69.    if($k==0){  
  70.     if(!$zero){  
  71.      $_chinese=self::$basical[$v];  
  72.      $_chinese.='分';  
  73.      $zero_num=true;  
  74.     }  
  75.    }else{  
  76.     if($zero){  
  77.      if($zero_num){  
  78.       $_chinese=self::$basical[$v];  
  79.      }  
  80.     }else{  
  81.      $_chinese=self::$basical[$v];  
  82.      $_chinese.='角';  
  83.     }  
  84.    }  
  85.    $data=$_chinese.$data;  
  86.   }  
  87.   return $data;  
  88.  }  
  89. }  
  90. //使用方法 
  91. $nun = new Ext_Num2Cny();  
  92. echo Ext_Num2Cny::ParseNumber(1234567.5); 

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

Tags: PHP人民币金额转大写

分享到: