程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php實現中文轉數字,實現方式很智能很php,

php實現中文轉數字,實現方式很智能很php,

編輯:關於PHP編程

php實現中文轉數字,實現方式很智能很php,


分享一個輔助函數,使用php盡可能識別出字符串中的數字,實現效果如下。

1 2 3 4 5 6 7 8 9 echo checkNatInt('九百六十萬'); //普通中文數字,9600000 echo checkNatInt('壹億柒仟萬零捌佰肆拾'); //大寫中文數字,170000840     echo checkNatInt('學好PHP拿百萬年薪'); //句子中的數字, 1000000 echo checkNatInt('今年春運發送人次達26億'); //數字和漢字混合出現,2600000000   echo checkNatInt('兩只小蜜蜂'); //口語化數字,2 echo checkNatInt('萬萬沒想到'); //復古的表達方式,100000000

 

注意事項

  1. 不支持小數

  2. 不支持大於PHP_INT_MAX的數

 

部分實現代碼

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 function checkNatInt($str) {     $map array(         '一' => '1','二' => '2','三' => '3','四' => '4','五' => '5','六' => '6','七' => '7','八' => '8','九' => '9',         '壹' => '1','貳' => '2','三' => '3','肆' => '4','伍' => '5','陸' => '6','柒' => '7','捌' => '8','玖' => '9',         '零' => '0','兩' => '2',         '仟' => '千','佰' => '百','拾' => '十',         '萬萬' => '億',     );         $str str_replace(array_keys($map), array_values($map), $str);     $str = checkString($str'/([\d億萬千百十]+)/u');       $func_c2i function ($str$plus = false) use(&$func_c2i) {         if(false === $plus) {             $plus array('億' => 100000000,'萬' => 10000,'千' => 1000,'百' => 100,'十' => 10,);         }              $i = 0;         if($plus)         foreach($plus as $k => $v) {             $i++;             if(strpos($str$k) !== false) {                 $ex explode($k$str, 2);                  $new_plus array_slice($plus$i, null, true);                 $l $func_c2i($ex[0], $new_plus);                 $r $func_c2i($ex[1], $new_plus);                 if($l == 0) $l = 1;                 return $l $v $r;             }         }           return (int)$str;     }     return $func_c2i($str);   }     //來自uct php微信開發框架,其中的checkString函數如下   function checkString($var$check ''$default '') {     if (!is_string($var)) {         if(is_numeric($var)) {             $var = (string)$var;         }         else {             return $default;         }     }     if ($check) {          return (preg_match($check$var$ret) ? $ret[1] : $default);     }       return $var; }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved