> php教程 > PHP源码 > 본문

数字转换中文

PHP中文网
풀어 주다: 2016-05-25 17:10:21
원래의
1116명이 탐색했습니다.

php代码

<?php

class TransFormNumber{
    public $chinaData = array(&#39;1&#39;=>&#39;壹&#39;,&#39;2&#39;=>&#39;贰&#39;,&#39;3&#39;=>&#39;叁&#39;,&#39;4&#39;=>&#39;肆&#39;,&#39;5&#39;=>&#39;伍&#39;,&#39;6&#39;=>&#39;陆&#39;,&#39;7&#39;=>&#39;柒&#39;,&#39;8&#39;=>&#39;捌&#39;,&#39;9&#39;=>&#39;玖&#39;);
    public $chinaDataInt = array(&#39;1&#39;=>&#39;元&#39;,&#39;2&#39;=>&#39;拾&#39;,&#39;3&#39;=>&#39;佰&#39;,&#39;4&#39;=>&#39;仟&#39;,&#39;5&#39;=>&#39;万&#39;,&#39;6&#39;=>&#39;拾&#39;,&#39;7&#39;=>&#39;佰&#39;,&#39;8&#39;=>&#39;仟&#39;,&#39;9&#39;=>&#39;亿&#39;,&#39;10&#39;=>&#39;拾&#39;,&#39;11&#39;=>&#39;佰&#39;,&#39;12&#39;=>&#39;仟&#39;,&#39;13&#39;=>&#39;万&#39;);
    public $chinaDataFloat = array(&#39;1&#39;=>&#39;角&#39;,&#39;2&#39;=>&#39;分&#39;);
    private $Intnumber; // string
    private $Floatnumber; // string
    public $error = array(&#39;0&#39;=>&#39;零&#39;,&#39;def&#39;=>&#39;数据格式不支持&#39;);

    public function __construct($intnumber,$floatnumber){
        $this->Intnumber = $intnumber;
        $this->Floatnumber = $floatnumber;
    }
    /*13位整数*/
    public function getTransInt(){
      $this->Intnumber = intval($this->Intnumber);
      $len = strlen($this->Intnumber);
      if($len > 13){
          return $this->errorNotice(1);
      }
      if($this->Intnumber == 0){
          return $this->errorNotice(&#39;def&#39;);
      }
      $intData = strrev(substr($this->Intnumber,0,$len));
      $data = $this->setTransInt($intData,$len);
      krsort($data);
      $str = rtrim(join($data,&#39;&#39;),&#39;零&#39;);
      if(substr($this->Intnumber,$len-1,1) == 0){
          $str.=&#39;元&#39;;
      }
      unset($data);
      return $str;
   }
   public function getTransFloat(){
       return $this->setTransFloat($this->Floatnumber,strlen($this->Floatnumber));
   }
   private function setTransInt($intData,$pos){
      for($i=0;$i<$pos;$i++){
              $oneData = substr($intData,$i,1);
              if(($i == 4 || ($i%8) == 4) && $oneData == 0){
                  if(substr($intData,$i+1,1) == 0 && substr($intData,$i+2,1) == 0 && substr($intData,$i+3,1) == 0){
                      if(substr($intData,$i-1,1) == 0){
                          continue;
                      }else{
                          $data[] = &#39;零&#39;;
                      }
                  }else{
                      $data[] = &#39;万&#39;;
                      continue;
                  }
                  continue;
              }
              if($i%8 == 0 && $i != 0 && $oneData == 0){
                  $data[] = &#39;亿&#39;;
              }
              if($oneData == 0){
                  if(($i == 4 || $i == 7)){
                      if((substr($intData,$i-1,1) ==0)){
                            continue;
                      }else{
                          $data[] = &#39;零&#39;;
                      }
                  }else{
                      if(substr($intData,$i-1,1) !=0 && $i !=3 && $i != 8){
                          $data[] = &#39;零&#39;;
                      }else{
                          if($i == 3 && substr($intData,$i,1) == 0 && substr($intData,$i-1,1) != 0){
                              $data[] = &#39;零&#39;;
                          }
                      }
                  }
              }else{
                $data[] = $this->chinaData[$oneData].$this->chinaDataInt[$i+1];
              }

          }
         unset($intData,$oneData,$i);
         return $data;
   }
   //紧支持两位小数
   private function setTransFloat($floatData,$pos){
        if($pos > 2){
            return $this->errorNotice(&#39;def&#39;);
        }
        if($floatData{0} == 0){
            $data[] = &#39;零&#39;;
        }else{
            $data[] = $this->chinaData[$floatData{0}].$this->chinaDataFloat[1];
        }
        if($floatData{1} != 0 ){
            $data[] = $this->chinaData[$floatData{1}].$this->chinaDataFloat[2];
        }
        return implode(&#39;&#39;,$data);
   }
  public function errorNotice($error){
      return $this->error[$error];
  }
}

$num = new TransFormNumber(&#39;100228030&#39;,&#39;80&#39;);
echo $num->getTransInt();
echo $num->getTransFloat();
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!