本帖最后由 yao970953039 于 2011-08-22 17:02:29 编辑

解决方案 »

  1.   

    echo mb_substr('有一字符串长约30,想截取前20个,后面的用……号代替。谢谢',0,10)."……";
      

  2.   

    谢谢,就是这种效果。
    以前我都用str_replace学了一手
      

  3.   

    substr這個不好使吧,如果有中文咋辦。還是要自己處理下有中文的情況的。/**
     * 截取字符串
     */
    if(!function_exists('mbSubstr')) {
    function mbSubstr($str, $sublen)
        {
            if(strlen($str)<=$sublen) {
                $rStr =  $str;
            } else {
                $I = 0;
                while ($I<$sublen) {
                    $StringTMP = substr($str,$I,1);
                    
                    if (ord($StringTMP)>=224) {
                        $StringTMP = substr($str,$I,3);
                        $I = $I + 3;
                    } elseif (ord($StringTMP)>=192) {
                        $StringTMP = substr($str,$I,2);
                        $I = $I + 2;
                    } else {
                        $I = $I + 1;
                    }
                    
                    $StringLast[] = $StringTMP;
                }
                
                $rStr = implode("",$StringLast).'...';
            } 
            
            return $rStr;
        }
    }這個是我常用的。
      

  4.   

    要加判断
    if(strlen($str)>20)
    //加
    else
    //不用管
      

  5.   

    最简单的可以是:
    mb_substr($str,0,20)."……";
    substr($str,0,20)."……";(这个是计算占位的.比如你全是英文字母,就会截取20个字母;如果20个GB2312编码的中文,就会截取10个中文,因为gb2312的汉字是占用2个位;如果20个utf8编码的中文,就会截取6个中文和一个错误,因为utf8的汉字是占用3个位;)当然,楼上说的,加判断也可以.