连接php_mbstring扩展库,使用mb_substr函数
自己写一个也可以,这样的代码到处都有

解决方案 »

  1.   

    给你个涵数
    function TrimChinese($str,$len){
       $r_str='';
       $i=0;
       while ($i<$len){
    $ch=substr($str,$i,1);
    if(ord($ch)>0x80) $i++;
         $i++;
       }
       $r_str=substr($str,0,$i);
       return $r_str;
    }
      

  2.   


    $str="这个字符好长呀,^_^";
    $Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符...
    Echo "$Short_Str";
    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; 

    Function showShort($str,$len) 

    $tempstr = csubstr($str,0,$len); 
    if ($str<>$tempstr) 
    $tempstr .= "..."; //要以什么结尾,修改这里就可以.return $tempstr; 

      

  3.   

    //参数说明:
        $oStr:要截取的字符串
        $oLen:要截取多长
        $oSplt:用什么分隔
        $oFlag:0-仅截取$oLen指定的长度后加上分隔符($oSplit) 1-在字符串每隔$oLen长度后加上一个$oSplt
    function Strg_Chunk($oStr,$oLen,$oSplt,$oFlag=0) {
    $LnLen=0;
    $getStr="";
    while ($oStr) {
    if (ord(substr($oStr,0,1))>127)
    {
    $getStr.=substr($oStr,0,2);
    $oStr=substr($oStr,2,strlen($oStr));
    $LnLen+=2;
    }else{
    $getStr.=substr($oStr,0,1);
    $oStr=substr($oStr,1,strlen($oStr));
    if (ord(substr($oStr,0,1))==10 || ord(substr($oStr,0,1))==13) {
    $LnLen=0;
    }else {
    $LnLen++;
    }
    }
    if ($LnLen>=$oLen) {
    $LnLen=0;
    $getStr.=$oSplt;
    if ($oFlag==0) { break; }
    } }
    return $getStr;
    }
      

  4.   

    http://expert.csdn.net/Expert/topic/2066/2066774.xml?temp=.3540766
      

  5.   

    function m_substr($str,$start,$len){
    preg_match_all("/[\\x80-\\xff]?./",$str,$arr);
    return @implode(array_slice($arr[0],$start,$len),"");
    }