这是俺参考网上的介绍写出来的,一直在用还没发现什么问题,楼主试试,如果有问题记得给我留言,谢谢。
function substring($string,$num){//截取汉字字符串并且加上省略号
$string=str_replace(" ","  ",$string);
if(strlen($string)<=$num) {
$str=$string;
}else{
$str=mysubstring($string,$num-2)."…";
}
$str=str_replace("  "," ",$str);
return $str;
}
function mysubstring($string,$num)//截取汉字字符串 

    if ($num>strlen($string)) $num=strlen($string); 
    $j=0; 
    for($i=0;$i<$num;$i++)

       if(ord(substr($string,$i,1))>0xa0){ 
          $j++; 
          if ($i<($num-1)){ 
             $i++; 
             $j++; 
          } 
       } 
     } 
    if($j%2!=0) $num++; 
    $str=substr($string,0,$num); 
    return $str; 
}