不要使用substr, 使用mb_substr函数,是几个字符就截取几个。 mb_substr函数支持编码方式(GB2312, UTF-8)。

解决方案 »

  1.   

    我用了mb_substr().可是系统报错,说是用了未定义的函数!
      

  2.   

    我使用的是php5,说没定义mb_substr()函数,不会是不支持吧
      

  3.   

    加载mb库没有啊。
    另外,不用它也一样可以做到。呵呵,那就是中文编码的问题了,呵呵ord($str[$i])是否小于128。
    呵呵
      

  4.   

    用自己写的函数:
    function sub_str($str,$len){
       $str = (string)$str;
       $len = (int)$len;   $strlen = strlen($str);
       if($len>$strlen) $len = $strlen;   $i = 0;
       $fixlen = 0;
       while($i<$len){
          $chr = $str[$i];
          $i++;
          if(ord($chr)<0x80) $fixlen++;
          elseif($i<$len){
            $i++;
            $fixlen += 2;
          }
       }   return substr($str,0,$fixlen);
    } <?phh print sub_str($s_v_content, 0, 20);?>,
      

  5.   

    print iconv_substr($s_v_content, 0, 20, 'gbk');php5中内嵌iconv函数组,不需要另外加载哈哈,php5想把日本鬼子赶出php舞台啦!
      

  6.   

    不行啊,我现在用的是老的PHP,4.X版本的,在原来系统中进行修改的,所以不可能对PHP进行配置或加载的,各位大侠行行好,还有没有简单易行的方法!!
      

  7.   

    我怎么用substr()也不会出现&nbsp;这种情况啊
    奇数什么都试了不过用 iconv_substr($s_v_content, 0, 20, 'gbk')中文也算一个字符
    也还挺方便的
      

  8.   

    我想这个问题,对PHP程序员来说,也不算是难事,为什么就没人解答呢,郁闷!!!
      

  9.   

    ipsearch2008(ipsearch)已经给出你代码了啊,
    还不结帐,呵呵
      

  10.   

    还是不行ipsearch2008(ipsearch)的代码,似呼没什么变化,还是会出现&nbsp;
      

  11.   

    朋友,请关注一下此帖:
    http://community.csdn.net/Expert/topic/4338/4338855.xml?temp=.8305628
      

  12.   

    唠叨以前发的。
    <?
    //用法与substr函数一样
    function c_substr($str,$start=0) {
      $ch = chr(127);
      $p = array("/[\x81-\xfe]([\x81-\xfe]|[\x40-\xfe])/","/[\x01-\x77]/");
      $r = array("","");
      if(func_num_args() > 2)
        $end = func_get_arg(2);
      else
        $end = strlen($str);
      if($start < 0)
        $start += $end;  if($start > 0) {
        $s = substr($str,0,$start);
        if($s[strlen($s)-1] > $ch) {
          $s = preg_replace($p,$r,$s);
        $start += strlen($s);
        }
      }
      $s = substr($str,$start,$end);
      $end = strlen($s);
      if($s[$end-1] > $ch) {
        $s = preg_replace($p,$r,$s);
        $end += strlen($s);
      }
      return substr($str,$start,$end);
    }
    ?>
      

  13.   

    substr你怎么用,这个函数就怎么用。