php實現中文轉數字

來源:互聯網
上載者:User
分享一個輔助函數,使用php儘可能識別出字串中的數字,

先上代碼

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;}

實現效果如下。

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

注意事項

不支援小數

不支援大於PHP_INT_MAX的數

以上就介紹了php實現中文轉數字,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.