今天看到一道题,
用php写一个函数数将一,二,十一,十二,二十二,四十三,一百一十八,七百五十八,一千五十六,一千九百四十二这样的中文数字转换成1,2,11,12,22,43,118,758,1056,1942这样阿拉伯数字,6000以内的能转换就行了。
用什么思路去解决?
用php写一个函数数将一,二,十一,十二,二十二,四十三,一百一十八,七百五十八,一千五十六,一千九百四十二这样的中文数字转换成1,2,11,12,22,43,118,758,1056,1942这样阿拉伯数字,6000以内的能转换就行了。
用什么思路去解决?
自己添全1-10吧。
function toarabia($str){
$num=0;
$bins=array("零","一","二","三","四","五","六","七","八","九",'a'=>"个",'b'=>"十",'c'=>"百",'d'=>"千",'e'=>"万");
$bits=array('a'=>1,'b'=>10,'c'=>100,'d'=>1000,'e'=>10000);
foreach($bins as $key=>$val){
if(strpos(" ".$str,$val)) $str=str_replace($val,$key,$str);
}
foreach(str_split($str,2) as $val){
$temp=str_split($val,1);
if(count($temp)==1) $temp[1]="a";
if(isset($bits[$temp[0]])){
$num=$bits[$temp[0]]+(int)$temp[1];
}else{
$num+=(int)$temp[0]*$bits[$temp[1]];
}
}
return $num;
}
echo toarabia("九万九千九十九");
//99099
?>