【www.gdgbn.com--中文酷站】

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

echo "

";
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    $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);
}
 

本文来源:http://www.gdgbn.com/kuzhan/29747/