因为把双字节截断的原因比如保留四个字符的话
“我们的爱”就没有问题
但是“a我们的爱”就会又问题
建议使用我写的函数:
function showShort($str, $len)
{
    if (strlen($str) <= $len)return $str;
    $s = 0;
    $new_str = ""; //初始化状态变量和原始空字串
    for($i = 0;$i < $len-2;$i++) {
        if (ord($str{$i}) > 127)$s++;
        $new_str .= $str{$i};
    } 
    if ($s % 2 == 1)$new_str .= $str{$i};
    return $new_str . "...";
} 经过自己的测试,到现在还没有发现BUG

解决方案 »

  1.   

    有BUG有空格& nbsp;出现啊
      

  2.   

    是把汉字截断了的问题.....给你个好用的中文字符截断的函数<?php/**
    ***@Author:LAD
    ***@URL   :<a href="http://www.cnpik.com/" target="_blank">http://www.cnpik.com/</a>
    ***@E_mail:[email protected] 
    ***@随便用,不收钱 :-)
    */function cnSubStr($string,$sublen)
    {
        if($sublen>=strlen($string))
        {
            return $string;
        }
        $s="";
        for($i=0;$i<$sublen;$i++)
        {
            if(ord($string{$i})>127) 
            {
                $s.=$string{$i}.$string{++$i};
                continue;
            }else{
                $s.=$string{$i};
                continue;
            } 
        }
        return $s;
    }// End Function cnSubStr($string,$sublen)/////////// Use like this :echo "<p>__________________________<p>";
    $string="242432反对感是456犯得上广泛大使馆地方7890";
    $sublen=strlen($string);
    $len=20;
    echo $string."<p>";
    echo "总长为:".($sublen+1)."<p>";
    echo "截取数:".$len."<p>";for($i=1;$i<=$sublen+1;$i++){
        if($i>$len){
            echo $i."<b> →</b> ".cnSubStr($string,$i)."…<br>";
            continue;
        }
        echo $i."<b> →</b> ".cnSubStr($string,$i)."<br>";
    }?>