Neo's Blog

首頁 相本 討論 書籤

分類目錄
本站日誌 (51)
碎碎唸啦 (173)
網站架設 (84)
程式設計 (161)
軟體使用 (69)
電子商務 (126)
經營奇想 (48)
基金理財 (11)
聰明消費 (87)
電影心得 (47)
開放原碼 (16)
工作記錄 (2)
毛毛小記 (9)
就是不同 (2)




歷史資料
 




May 02, 2006
[PHP] 阿拉伯數字轉為大寫國字

正好前陣子有需要,從螢火飛的 VB 版本移植到 PHP 上。

function getChineseNumber($money){
    
    $ar = array("零", "壹", "貳", "參", "肆", "伍", "陸", "柒", "捌", "玖") ;
    $cName = array("", "", "拾", "佰", "仟", "萬", "拾", "佰", "仟", "億", "拾", "佰", "仟");
    $conver = "";
    $cLast = "" ;
    $cZero = 0;
    $i = 0;
    for ($j = strlen($money) ; $j >=1 ; $j--){  
      $cNum = intval(substr($money, $i, 1));
      $cunit = $cName[$j]; //取出位數
      if ($cNum == 0) { //判斷取出的數字是否為0,如果是0,則記錄共有幾0
         $cZero++;
         if (strpos($cunit,"萬億") >0 && ($cLast == "")){ // '如果取出的是萬,億,則位數以萬億來補
          $cLast = $cunit ;
         }      
      }else {
        if ($cZero > 0) {// '如果取出的數字0有n個,則以零代替所有的0
          if (strpos("萬億", substr($conver, strlen($conver)-2)) >0) {
             $conver .= $cLast; //'如果最後一位不是億,萬,則最後一位補上"億萬"
          }
          $conver .=  "零" ;
          $cZero = 0;
          $cLast = "" ;
        }
         $conver = $conver.$ar[$cNum].$cunit; // '如果取出的數字沒有0,則是中文數字+單位          
      }
      $i++;
    }  
  //'判斷數字的最後一位是否為0,如果最後一位為0,則把萬億補上
     if (strpos("萬億", substr($conver, strlen($conver)-2)) >0) {
       $conver .=$cLast; // '如果最後一位不是億,萬,則最後一位補上"億萬"
    }
    return $conver;
  }

 
由 Neo 發表於 May 2, 2006 12:42 AM 收進你的MyShare個人書籤  

實際上遇到的反倒是大寫國字改為阿拉伯數字
原因是政府改採用橫式公文,部分數字格式要做轉換,已符合研考會規範。


晴樹 發表於 May 2, 2006 04:33 PM

去年面試的時候,就被他用這題問倒了
沒想到可以這麼單純呀
難怪不能錄取, 看來還有很長的路要走


tka 發表於 May 3, 2006 07:34 PM

有bug
100000
壹拾


Zeke 發表於 November 23, 2006 05:04 PM
發表迴響  
(*星號開頭為必填欄位)











(請輸入您看到的數字,看不到請按右鍵->顯示圖片)


記住我的資訊?







Copyright 2005 Neo's Blog All rights reserved.