当前位置:编程学习 > php >>

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

php教程 中文大写数字 转成 数字代码

echo "<pre>";
echo test('一十二亿七十一万五十一');
/*
create by piaofen
date: 2011-03-31
function: 中文大写数字转阿拉伯数字
*/
function chtonum($str='')
{
$unit = array('亿'=>100000000,'万'=>10000,'千'=>1000,'仟'=>1000,'百'=>100,'十'=>10);
$num = array('一'=>1,'二'=>2,'三'=>3,'四'=>4,'五'=>5,'六'=>6,'七'=>7,'八'=>8,'九'=>9);
$str = str_replace(array_keys($num),$num,$str);
$result = array();
$number = '';
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);
foreach($pnum[0] as $val){
  $tmp = '';
  for($i=0;$i<mb_strlen($val,'utf-8');$i++){
   $s = mb_substr($val,$i,1,'utf-8');
   if(!is_numeric($s)){
    $k = $unit[$s];
    if(strlen($tmp)>=strlen($k)){
     preg_match('/([0-9]*)([0-9]{'.(strlen($k)-1).'})([0-9])/ism',$tmp,$n);
     $tmp = ($n[1]+$n[3]).$n[2];
    }else{
     $tmp = $tmp * $k;
    }
   }else if($i==(mb_strlen($val,'utf-8')-1)){
    $tmp += $s;
   }else{
    $tmp .= $s;
   }
  }
  $nnum[] = $tmp;
}
$result = str_replace(array_keys($unit),';',str_replace($pnum[0],$nnum,$str));
foreach(explode(';',$result) as $val){
  $number .= sprintf('%04d',$val);
}
return sprintf('%2u',$number);
}
 

补充:Php教程,Php常用代码 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,