关于dede里读取部分文章的问题,[field:title/]限制字节了。[field:description function='cn_substr(@me,255)'/],最多字节是255.有更好解决这个问题的方法么?
求解....

解决方案 »

  1.   

    把255改成你想要的长度不就行。
    函数也没有限制长度啊
     
    function cn_substr($str,$slen,$startdd=0)
    {
    global $cfg_soft_lang,$cfg_is_mb,$cfg_is_iconv;
    //判断是否使用mb_substr
    if($cfg_is_mb)
    {
    if($cfg_soft_lang=='utf-8') mb_internal_encoding("UTF-8");
    else mb_internal_encoding("GBK");
    return mb_substr($str,$startdd,$slen);
    }
    if($cfg_is_iconv)
    {
    return  iconv_substr($str, $startdd, floor($slen/2));
    }
    if($cfg_soft_lang=='utf-8')
    {
    return cn_substr_utf8($str,$slen,$startdd);
    }
    $restr = '';
    $c = '';
    $str_len = strlen($str);
    if($str_len < $startdd+1)
    {
    return '';
    }
    if($str_len < $startdd + $slen || $slen==0)
    {
    $slen = $str_len - $startdd;
    }
    $enddd = $startdd + $slen - 1;
    for($i=0;$i<$str_len;$i++)
    {
    if($startdd==0)
    {
    $restr .= $c;
    }
    else if($i > $startdd)
    {
    $restr .= $c;
    } if(ord($str[$i])>0x80)
    {
    if($str_len>$i+1)
    {
    $c = $str[$i].$str[$i+1];
    }
    $i++;
    }
    else
    {
    $c = $str[$i];
    } if($i >= $enddd)
    {
    if(strlen($restr)+strlen($c)>$slen)
    {
    break;
    }
    else
    {
    $restr .= $c;
    break;
    }
    }
    }
    return $restr;
    }