今天看到一道题,
用php写一个函数数将一,二,十一,十二,二十二,四十三,一百一十八,七百五十八,一千五十六,一千九百四十二这样的中文数字转换成1,2,11,12,22,43,118,758,1056,1942这样阿拉伯数字,6000以内的能转换就行了。
用什么思路去解决?

解决方案 »

  1.   

    str_replace(array('一','二'),array('1','2'),$str);
    自己添全1-10吧。
      

  2.   

    本帖最后由 xuzuning 于 2011-11-27 11:14:44 编辑
      

  3.   

    只能转换十万以内的<?php
    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
    ?>