这是因为汉字全角半角的问题,给你个函数:
function ChgTitle($title,$length){ 
   if($length!=0){
   
   if (strlen($title)>$length) { 
    $temp = 0; 
    for($i=0; $i<$length; $i++) 
    if (ord($title[$i]) > 128) 
      $temp++; 
     if ($temp%2 == 0) 
       $title = substr($title,0,$length)."..."; 
     else 
     $title = substr($title,0,$length+1)."..."; 
    } 
    return $title; 
   
   }else{return $title;}
   
   }

解决方案 »

  1.   

    唠叨不是给出你解决办法了吗?
    substr( $str, 0, 20 ) . chr( 0 );
      

  2.   

    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; 
    }
    用法:$memo = showshort($field,$length);//$field 要截取的内容,$length截取的长度
      

  3.   

    用 MBString 中的函数就可以了。PHP.INI 中加入:extension=php_mbstring.dll关于 mbstring 中函数看.
    http://cn.php.net/manual/zh/ref.mbstring.php