用这个函数
        function getSubString($strTitle,$nLength)
        {                if (strlen($strTitle) > $nLength)
                {
                        $temp = 0;
                        for($i=0;$i < $nLength;$i++)
                        {
                                $chr = substr($strTitle,$i,1);                                if(ord($chr) > 128)
                                {
                                        $temp++;
                                }
                        }                        if($temp%2 ==0)
                        {
                                $strTitle = substr($strTitle,0,$nLength)."...";
                        }
                        else
                        {
                                $strTitle = substr($strTitle,0,$nLength+1)."..."
;
                        }
                }
                return $strTitle;
        }

解决方案 »

  1.   

    redpark(黑雪)的方法无法解决中文问题。
      

  2.   

    我自己的想法就是:
    先判断所读出字段的长度,如果超过X(X是假设我设定的默认显示多少长度),就用截取前x位显示出来,如果没超过的话就显示整个字段.不知道这样的方法可以吗?有没有更加简便的呢?
      

  3.   

    $str 字符串,$len 显示多少长度
    function cut_long_string($str,$len){
    if(strlen($str)<$len){
    return $str;
    }
    $_str = substr($str,0,$len-3);
    $_str = preg_replace('/[\x01-\x2E|\/|\\|\[|\]|\x5B-\x60|\x3A-\x40|\x5E-\x60]/',"_",$_str);
    if(preg_match("/\W+$/u",$_str,$_chinese)){
    //echo $_chinese[0]."  ". strlen($_chinese[0])." ".(strlen($_chinese[0])%2)."<BR>";
    if((strlen($_chinese[0]))%2){
    $_ret = substr($str,0,$len-2)."..";
    }else{
    $_ret = substr($str,0,$len-3) . '...';
    }
    }else{
    $_ret = substr($str,0,$len-3).'...';
    }
    return $_ret;
    }