搜索一下吧
这类的贴子太多了。
找一下faq也有

解决方案 »

  1.   

    给你一个函数吧,保证好用,具体使用方法不用我说你一看就明白
    给分!!!
    <?
    //$str 要截取的字符串
    //$start 从第$start个字符开始截取,一般取 0
    //$len 截取长度
    function CsubStr($str,$start,$len) 

    $strlen=strlen($str); 
    $clen=0; 
    for($i=0;$i<$strlen;$i++,$clen++) 

    if ($clen>=$start+$len) 
    break; 
    if(ord(substr($str,$i,1))>0xa0) 

    if ($clen>=$start) 
    $tmpstr.=substr($str,$i,2); 
    $i++; 

    else 

    if ($clen>=$start) 
    $tmpstr.=substr($str,$i,1); 


    return $tmpstr; 
    }
    ?>
      

  2.   

    echo substr($text,30).chr(0);
      

  3.   

    这有一个贴子,可以给你启发
    http://expert.csdn.net/Expert/topic/1217/1217292.xml?temp=2.796572E-02
      

  4.   

    临时改造了一下,没有测试
    <?
    /*******************************************
    *   Product     :                          *
    *   Version     :                          *
    *   Copyright   :   Baby Studio            *
    *   Author      :   Yingjie Pan            *
    *   Email       :   [email protected]     *
    *******************************************/
    ?>
    <?
    $vsmystr=BabySubstr('我是BabyStudio,请多多指教!',4);
    echo($vsmystr.'<br/>');function BabySubstr($vsstr_,$vilen_)
    {
    $vsreturn='';
    $viindex=0;
    $vitmp=0;
    $vstmp='';
    $vicncharaterend=0;
    $vscharacter=substr($vsstr_,$viindex,1);
    $vsrealcharacter=substr($vsstr_,$viindex,1);
    while(strlen($vsrealcharacter))
    {
    $viindex++;
    if(ord($vscharacter)<0 || ord($vscharacter)>127)
    {
    if($vicncharaterend==0)
    {
    $vicncharaterend=1;
    }
    else
    {
    $vitmp++;
    $vicncharaterend=0;
    }
    }
    else
    {
    $vitmp++;
    }
    $vstmp=$vstmp.$vscharacter;
    if($vitmp==$vilen_)
    {
    $vsreturn=$vstmp;
                break;
    }
    if(!strlen(substr($vsstr_,$viindex,1)))
    {
    $vsreturn=$vstmp;
    break;
    }
    $vscharacter=substr($vsstr_,$viindex,1);
    $vsrealcharacter=substr($vsstr_,$viindex,1);
    }
    return($vsreturn);
    }
    ?>