先上代码
| 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 |   $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($plusas$k=> $v) {      $i++;      if(strpos($str, $k) !== false) {        $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函数如下 functioncheckString($var, $check= '', $default= '') {  if(!is_string($var)) {    if(is_numeric($var)) {      $var= (string)$var;    }    else{      return$default;    }  }  if($check) {  }   return$var;} | 
实现效果如下。
| 1 2 3 4 5 6 7 8 9 10 | echocheckNatInt('九百六十万'); //普通中文数字,9600000echocheckNatInt('壹亿柒仟万零捌佰肆拾'); //大写中文数字,170000840  echocheckNatInt('今年春运发送人次达26亿'); //数字和汉字混合出现,2600000000 echocheckNatInt('两只小蜜蜂'); //口语化数字,2echocheckNatInt('万万没想到'); //复古的表达方式,100000000 | 
注意事项
不支持小数
不支持大于PHP_INT_MAX的数
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END
    

















请登录后发表评论
注册
社交帐号登录