为什么要这样做?用text类型存放不就行了

解决方案 »

  1.   

    $content1=substr($content,0,4000);
    $content2=substr($content,4000,8000);
    将$content1,$content2分别放在两个varchar2字段里,但是select出来在合起来显示也会中间有乱码的
      

  2.   

    http://blog.csdn.net/xuzuning
    高效的中文字符串截取函数
      

  3.   

    用法和substr函数一样分割串到数组,中文每字算1
    <?php
    function m_chunk_split($str,$size=64) {
      preg_match_all("/[\x80-\xff]?./",$str,$ar);
      $a = array_chunk($ar[0],$size);
      $b = array_fill(0,count($a),'');
      return array_map('join',$b,$a);
    }
    print_r(m_chunk_split('dsfj中文654哈哈859fr',10));
    ?>
      

  4.   

    那你就用我的那个c_substr函数一段一段的取
      

  5.   

    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);
    }function m_substr($str,$start) {
      preg_match_all("/[\x80-\xff]?./",$str,$ar);
      if(func_num_args() >= 3) {
        $end = func_get_arg(2);
        return join("",array_slice($ar[0],$start,$end));
      }else
        return join("",array_slice($ar[0],$start));
    }
    print_r(m_chunk_split('dsfj中文654哈哈859fr',0));
    print_r(m_chunk_split('dsfj中文654哈哈859fr',10));
    好像只能够从指定位置一直取到最后,不能够取中间一部分的吗,如3到6位的
      

  6.   

    function split_chr($title,$len)  
    {  
    $length = $len; 
    if (strlen($title)>$length) {  
    $temp = 0;  
    for($i=0; $i<$length; $i++)  
    if (ord($title[$i])>128) $temp++;  
    if ($temp%2 == 0)  
    $title=substr($title,0,$length); 
    else  
    $title=substr($title,0,$length+1); 
    }  
    return $title;  
    }  这个函数希望对你有帮助~~
      

  7.   

    oracle可以用clob,blob之类啊,比mysql的text还大呢
      

  8.   

    print_r(m_chunk_split('dsfj中文654哈哈859fr',10));
    好像只能够从指定位置一直取到最后,不能够取中间一部分的吗,如3到6位的m_chunk_split是按指定的长度分割字符串,如例就是把'dsfj中文654哈哈859fr'按10个字一组切开到数组至于c_substr和m_substr
    已经说了用法与substr一样的。那么为什么不用第三个参数呢?
    3到6位
    print m_substr('dsfj中文654哈哈859fr',3,6);
    print c_substr('dsfj中文654哈哈859fr',3,6);
    最后6个字符
    print c_substr('dsfj中文654哈哈859fr',-6);