这是俺参考网上的介绍写出来的,一直在用还没发现什么问题,楼主试试,如果有问题记得给我留言,谢谢。
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; 
}

解决方案 »

  1.   

    gaochao79(无妻徒刑) 感谢关注
    但是你的这个函数在UTF-8编码下,一样的存在这种问题。
      

  2.   

    php的mb_string库可以解决你的问题。如果你非要自写函数解决这个问题,去查utf8编码格式先。
      

  3.   

    Oh Good 
    谢谢!
    没有详细的去看PHP各种扩展的详细资料,真是太笨,恶补一下mb_strimwidth($str, 0, 10, "...");//可以很好的解决我出现的问题