> 백엔드 개발 > PHP 튜토리얼 > php实现将人民币金额转大写的方法类

php实现将人民币金额转大写的方法类

WBOY
풀어 주다: 2016-06-20 13:03:59
원래의
1461명이 탐색했습니다.

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

<p>class Num2Cny{</p>  static $basical=array(0=>'零','壹','贰','叁','肆','伍','陆','柒','捌','玖');<br />  static $advanced=array(1=>'拾','佰','仟');<br />  public static function ParseNumber($number){<br />    $number=trim($number);<br />    if(!is_numeric($number)||intval($number)>999999999999) return 'error';<br />    if($number==0) return '零';<br />    if(strpos($number,'.')){<br />      $number=round($number,2);<br />      $data=explode('.',$number);<br />      $data[0]=self::int($data[0]);<br />      $data[1]=self::dec($data[1]);<br />      return $data[0].$data[1];<br />    }else{<br />      return self::int($number).'整';<br />    }<br />  }<br />  public static function int($number){<br />    $arr=array_reverse(str_split($number));<br />    $data='';<br />    $zero=false;<br />    $zero_num=0;<br />    foreach($arr as $k=>$v){<br />      $_chinese='';<br />      $zero=($v==0)?true:false;<br />      $x=$k%4;<br />      if($x && $zero && $zero_num>1)continue;<br />      switch($x){<br />        case 0:<br />          if($zero){<br />            $zero_num=0;<br />          }else{<br />            $_chinese=self::$basical[$v];<br />            $zero_num=1;<br />          }<br />          if($k==8){<br />            $_chinese.='亿';<br />          }elseif($k==4){<br />            $_chinese.='万';<br />          }<br />          break;  <br />        default:<br />          if($zero){<br />            if($zero_num==1){<br />              $_chinese=self::$basical[$v];<br />              $zero_num++;<br />            }<br />          }else{<br />            $_chinese=self::$basical[$v];<br />            $_chinese.=self::$advanced[$x];<br />          }<br />      }<br />      $data=$_chinese.$data;<br />    }<br />    return $data.'元';<br />  }<br />  public static function dec($number){<br />    if(strlen($number)<2) $number.='0';<br />    $arr=array_reverse(str_split($number));<br />    $data='';<br />    $zero_num=false;<br />    foreach($arr as $k=>$v){<br />      $zero=($v==0)?true:false;<br />      $_chinese='';<br />      if($k==0){<br />        if(!$zero){<br />          $_chinese=self::$basical[$v];<br />          $_chinese.='分';<br />          $zero_num=true;<br />        }<br />      }else{<br />        if($zero){<br />          if($zero_num){<br />            $_chinese=self::$basical[$v];<br />          }<br />        }else{<br />          $_chinese=self::$basical[$v];<br />          $_chinese.='角';<br />        }<br />      }<br />      $data=$_chinese.$data;<br />    }<br />    return $data;<br />  }<br /><p>}
로그인 후 복사

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

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

结果将输出:

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

相关:JS数字金额转大写金额方法


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿