<?php
/*===================字符串截取中文函数======================*/
function cnsubstr($str,$len)
{
  if(strlen($str)>$len)
  {
    $temp=0;
    for($i=0;$i<$len;$i++)
    {
      if(ord($str[$i])>0xa0) $temp++;
    }
    if($temp%2==0) $str=substr($str,0,$len)."...";
    else $str=substr($str,0,$len+1)."...";
  }
  return $str;
}
?>

解决方案 »

  1.   

    <?php
    /*_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    mb_substr字符的截取,不会出现乱码.他是一个一个字符算的.需要加载mbstring在php.ini中
    _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-*/
    echo mb_substr("啊方腊qwerq十分可;",0,5);
    ?>
      

  2.   

    http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=7733
    应该先到精华区看看
      

  3.   

    /*-------------------------------------------------------------------------*/
    //
    // Chinese substr Function
    //
    /*-------------------------------------------------------------------------*/

    function gb_substr($str,$start,$len) // 

    if (strlen($str)>$len)

    $strlen=$start+($len-4); 
    for($i=0;$i<$strlen;$i++) 

    if(ord(substr($str,$i,1))>0xa0) 

    $tmpstr.=substr($str,$i,2); 
    $i++; 

    else

    $tmpstr.=substr($str,$i,1); 


    return $tmpstr; 

    else 

    return $str; 

    }
      

  4.   

    用substr()获取字符串,然后判断>0xa0的字符的个数,如果为奇数则判断最后一个字符是不是>0xa0,如果是则去除最后一个字符。