本帖最后由 vcbidkkk 于 2011-09-07 23:51:29 编辑

解决方案 »

  1.   

    没看明白,中文日期换成数字??
    $ynsj="二○一一年九月五日";变成$ynsj="2011/9/5";什么意思呢?
      

  2.   

    $StrY="二○一一年九月五日";
    $NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'○');
    $NumberArray=array_flip($NumberArray);$StrArray=array();
    $StrArray=str_split($StrY,2);$Str='';
    foreach ($StrArray as $Value){
    if (array_key_exists($Value,$NumberArray)){
    $Str=$Str.$NumberArray[$Value];
    }
    }echo $Str;多写了个步骤. $NumberArray=array_flip($NumberArray); 数组自己换一下key和value 就不需要这个了.
      

  3.   

    笨就笨点吧...咔咔.... 我上面写的 思路有啦 干嘛还要改那么久...这孩子...
    $StrY="二○一一年十月二十一日";
    $Y=substr($StrY,0,strpos($StrY,'年'));//年
    $M=substr($StrY,strlen($Y)+2,strpos($StrY,'月')-2-strlen($Y));//月
    $D=substr($StrY,strpos($StrY,'月')+2,strlen($StrY)-strlen($M)-strlen($Y)-6);//日
    $NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八',
    '9'=>'九','0'=>'○','10'=>'十','11'=>'十一','12'=>'十二','20'=>'二十','30'=>'三十');
    $NumberArray=array_flip($NumberArray);
    $StrArray=array();
    $YearArray=str_split($Y,2);
    //年
    $YStr='';
    foreach ($YearArray as $Value){
    if (array_key_exists($Value,$NumberArray)){
    $YStr=$YStr.$NumberArray[$Value];
    }
    }
    //月份
    $MStr='';
    if (array_key_exists($M,$NumberArray)){
    $MStr=$NumberArray[$M];
    }
    //日期
    if (count($D)<6){
    if (array_key_exists($D,$NumberArray)){
    $DStr=$NumberArray[$D];
    }else{
    $First=substr($D,0,4);
    $Second=substr($D,4);
    if (array_key_exists($First,$NumberArray)){
    $First=$NumberArray[$First];
    }
    if (array_key_exists($Second,$NumberArray)){
    $Second=$NumberArray[$Second];
    }
    $DStr=intval($First)+intval($Second);
    }
    }
    echo '年'.$YStr.'月'.$MStr.'日'.$DStr;
      

  4.   

    你写的行了;
    帮我看下用||为什么得不到值呀?
    <?php
    $StrY="一九一八年十二月二十六日";
    $NumberArray=array('1'=>'一','2'=>'二','3'=>'三','4'=>'四','5'=>'五','6'=>'六','7'=>'七','8'=>'八','9'=>'九','0'=>'○','10'=>'十','20'=>'二十');
    $NumberArray=array_flip($NumberArray);
    print_r($NumberArray);$StrArray=array();
    $StrArray=str_split($StrY,2);$Str='';
    foreach ($StrArray as $Value){
    if (array_key_exists($Value,$NumberArray)){
    $Str=$Str.$NumberArray[$Value];
    if($Value="10"||$Value="20"||$Value="30")
    $yy=strpos($Str,$Value);
    }
    }
    echo $Str."<br>";
    echo $yy;
    ?>
      

  5.   

    单独
    if($Value="10")是能得到值的但是用||就没有了是什么原因啊?
      

  6.   


    我的foreach 循环了每一位 所以你的就重复了 比如 十一月 循环了三次就变成了 十  一  十一...
    所以我后来拆分了年月日...
      

  7.   

    注意 if ($xxx=='xxx') 不是 = 这里不要弄错啦
      

  8.   


    //================
    if(($Value=="10")||($Value=="20")||($Value=="30"))
    $yy=strpos($Str,$Value);
    //=================
    因为没有嘛你加上这个就不报错了 但是没有值的.咔咔 
    后面的改成
    if (isset($yy))
    echo $yy;
      

  9.   

    网上找到过一个用ord判断字符是否中文的,>0ax1,这个方法我试了下,感觉好像也不行,会乱码.看来处理这方面目前也没有很好的完善的方法.只能暂时处理,无法完美解决.