數字轉為漢字金額的PHP函數

jopen 12年前發布 | 24K 次閱讀 PHP PHP開發

<?php
 /**

  • 數字轉換為中文
  • @param string|integer|float $num 目標數字
  • @param integer $mode 模式[true:金額(默認),false:普通數字表示]
  • @param boolean $sim 使用小寫(默認)
  • @return string */ function number2chinese($num,$mode = true,$sim = true){ if(!is_numeric($num)) return '含有非數字非小數點字符!'; $char = $sim ? array('零','一','二','三','四','五','六','七','八','九') : array('零','壹','貳','叁','肆','伍','陸','柒','捌','玖'); $unit = $sim ? array('','十','百','千','','萬','億','兆') : array('','拾','佰','仟','','萬','億','兆'); $retval = $mode ? '元':'點'; //小數部分 if(strpos($num, '.')){
      list($num,$dec) = explode('.', $num);
      $dec = strval(round($dec,2));
      if($mode){
          $retval .= "{$char[$dec['0']]}角{$char[$dec['1']]}分";
      }else{
          for($i = 0,$c = strlen($dec);$i < $c;$i++) {
              $retval .= $char[$dec[$i]];
          }
      }
    
    } //整數部分 $str = $mode ? strrev(intval($num)) : strrev($num); for($i = 0,$c = strlen($str);$i < $c;$i++) {
      $out[$i] = $char[$str[$i]];
      if($mode){
          $out[$i] .= $str[$i] != '0'? $unit[$i%4] : '';
              if($i>1 and $str[$i]+$str[$i-1] == 0){
              $out[$i] = '';
          }
              if($i%4 == 0){
              $out[$i] .= $unit[4+floor($i/4)];
          }
      }
    
    } $retval = join('',array_reverse($out)) . $retval; return $retval; } //實例調用===================================================== $num = '0123648867.789'; echo $num,'<br>'; //普通數字的漢字表示 echo '普通:',number2chinese($num,false),''; echo '<br>'; //金額漢字表示 echo '金額(簡體):',number2chinese($num,true),''; echo '<br>'; echo '金額(繁體):',number2chinese($num,true,false);</pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!