首页 > 语言 > PHP > 正文

PHP 中文大写数字 转成 数字代码

2024-09-04 11:48:37
字体:
来源:转载
供稿:网友

php 中文大写数字转成数字代码,实例函数代码如下:

  1. echo "<pre>"
  2. echo test('一十二亿七十一万五十一'); 
  3. /* 
  4. create by piaofen  
  5. date: 2011-03-31 
  6. function: 中文大写数字转阿拉伯数字 
  7. */ 
  8. function chtonum($str=''
  9. $unit = array('亿'=>100000000,'万'=>10000,'千'=>1000,'仟'=>1000,'百'=>100,'十'=>10); 
  10. $num = array('一'=>1,'二'=>2,'三'=>3,'四'=>4,'五'=>5,'六'=>6,'七'=>7,'八'=>8,'九'=>9); 
  11. $str = str_replace(array_keys($num),$num,$str); 
  12. $result = array(); 
  13. $number = ''
  14. preg_match_all('/[0-9]千[0-9]百[0-9]十[0-9]|[0-9]百[0-9]十[0-9]|[0-9]十[0-9]|[0-9]/ism',$str,$pnum); 
  15. foreach($pnum[0] as $val){ 
  16.   $tmp = ''
  17.   for($i=0;$i<mb_strlen($val,'utf-8');$i++){ 
  18.    $s = mb_substr($val,$i,1,'utf-8'); 
  19.    if(!is_numeric($s)){ 
  20.     $k = $unit[$s]; 
  21.     if(strlen($tmp)>=strlen($k)){ 
  22.      preg_match('/([0-9]*)([0-9]{'.(strlen($k)-1).'})([0-9])/ism',$tmp,$n); 
  23.      $tmp = ($n[1]+$n[3]).$n[2]; 
  24.     }else
  25.      $tmp = $tmp * $k
  26.     } 
  27.    }else if($i==(mb_strlen($val,'utf-8')-1)){ 
  28.     $tmp += $s
  29.    }else
  30.     $tmp .= $s
  31.    } 
  32.   } 
  33.   $nnum[] = $tmp
  34. $result = str_replace(array_keys($unit),';',str_replace($pnum[0],$nnum,$str)); 
  35. foreach(explode(';',$resultas $val){ 
  36.   $number .= sprintf('%04d',$val); 
  37. return sprintf('%2u',$number); 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表