mb_internal_encoding("UTF-8");//你的编码
$s = "中文中文字符"; 
echo mb_strlen($s,1,1);

解决方案 »

  1.   


    //汉字截取2,单字符截取
    function cn_substr($str,$len,$start=0)
    {
        $restr="";
    $c="";
        $str_len=strlen($str);
    if($str_len<$start+1) //如果字符串长度小于等于要截取的开始位置的长度
    {
        return "";
    }
    if($str_len<$start+$len||$len==0)
    {
      $len=$str_len-$start;
    }
    $end=$start+$len-1;
    for($i=0;$i<$str_len;$i++)
    {
       if(ord($str[$i])>0x80)//判断是否为汉字
       {
          if($str_len>$i+1)
      {
              $c=$str[$i].$str[$i+1];
       }
      $i++;
       }
       else
       {
          $c=$str[$i];
       }
       if($i>$end) //如果超过要截取的字符则推出
       {
          if((strlen($restr)+strlen($c))>$len)
      {
          break;
      }else
      {
          $restr.=$c;
      break;
      }
       }
       //截取
       if($start==0 || $i>$start)
       {
          $restr.=$c;
       }    
    }
    return $restr;
    }
      

  2.   

    写错了,mb_substr不知怎么写成mb_strlen//mb_internal_encoding("UTF-8");//你的编码 
    $s = "中文中文字符"; 
    echo mb_substr($s,1,1,'UTF-8');
      

  3.   

    1变2:substr($s,0,2)substr($s,1,1)肯定不对了,中文要用偶数如果要兼中英文,用ord做一下判断,再看调用奇数的还是偶数的
      

  4.   

    感谢楼上这么多热心人回答。我采用了mbstring的方法,我以前一直以为这个东西是做日文片假名平假名转换的
    没想到还有如此重要的功能
    简单易用,真是php行走江湖杀人越货坑蒙拐骗必备良器啊