PHP實現漢字轉整型數字,如:一百零一 轉成101

lpki123 10年前發布 | 1K 次閱讀 PHP

test();
/**

  • 測試 */ function test() { echo CnToInt('一'); // 1 echo CnToInt('十'); // 10 echo CnToInt('十一'); // 11 echo CnToInt('一百一十'); // 110 echo CnToInt('一千零一'); // 1001 echo CnToInt('一萬零一百零一'); // 10101 echo CnToInt('一億一千三百萬零三千零一'); // 113003001 echo CnToInt('一千萬億'); // 11.0E+15 }

/**

  • 中文轉數字
  • @param String $var 需要解析的中文數
  • @param Int $start 初始值
  • @return int */ function CnToInt($var, $start = 0) { if (is_numeric($var)) {
     return $var;
    
    } if (intval($var) === 0) {
     $splits = array('億' => 100000000, '萬' => 10000);
     $chars = array('萬' => 10000, '千' => 1000, '百' => 100, '十' => 10, '一' => 1, '零' => 0);
     $Ints = array('零' => 0, '一' => 1, '二' => 2, '三' => 3, '四' => 4, '五' => 5, '六' => 6, '七' => 7, '八' => 8, '九' => 9, '十' => 10);
     $var = str_replace('零', "", $var);
     foreach ($splits as $key => $step) {
         if (strpos($var, $key)) {
             $strs = explode($key, $var);
             $start += CnToInt(array_shift($strs)) * $step;
             $var = join('', $strs);
         }
     }
     foreach ($chars as $key => $step) {
         if (strpos($var, $key) !== FALSE) {
             $vs = explode($key, $var);
             if ($vs[0] === "") {
                 $vs[0] = '一';
             }
             $start += $Ints[array_shift($vs)] * $step;
             $var = join('', $vs);
         } elseif (mb_strlen($var, 'utf-8') === 1) {
             $start += $Ints[$var];
             $var = '';
             break;
         }
     }
     return $start;
    
    } else {
     return intval($var);
    
    } }</pre>
 本文由用戶 lpki123 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!