既然你可以使用mbstring扩展
那么mb_substr不就可以了吗?

解决方案 »

  1.   

    这样吗???$s = '当在1串汉字中只有一个数字时';
    for($i=0; $i<mb_strlen($s); $i++)
      echo mb_substr($s, 0, $i).'<br>';
      

  2.   

    大家试试这行程序看会不会出现乱码
    $s=mb_strimwidth("万里咨询简报第5期(总第6期)",0,20,"…")
      

  3.   

    奇怪,为什么我得到的是
    万里咨询简报第5期!?/a>
      

  4.   

    会不会是PHP.INI中设置的编码跟你的PHP页面的编码不一样?
      

  5.   

    回yoyun() :
    php.ini和页面的编码在是在哪一行设置呢
      

  6.   

    系统是win2000 server spk4
    apache2.0.52
      

  7.   

    我用的是 php5.0.3 for win32
    这是一个最少有人投诉的版本,除了已知的但开发组不愿修改或无力修改的BUG外,几乎没有问题
      

  8.   

    在php.ini里面设置mbstring.internal_encoding = gbk或者你用那个函数的时候加最后一个参数为gbk:
    $s=mb_strimwidth("万里咨询简报第5期(总第6期)",0,20,"…",'gbk');
      

  9.   

    不过不建议用mbstring,我以前测试过,速度会慢大概30多倍。截取中文字符串的类网上多的是,你可以搜索一下试试看!
      

  10.   

    utf-8的
    //$cutlength 为截取的长度(即字数) 
    function csubstr($sourcestr,$aa,$cutlength) 

    $returnstr=''; 
    $i=0; 
    $n=0; 
    $str_length=strlen($sourcestr);//字符串的字节数 
    while (($n<$cutlength) and ($i<=$str_length)) 

    $temp_str=substr($sourcestr,$i,1); 
    $ascnum=Ord($temp_str);//ascii码 
    if ($ascnum>=224) 

    $returnstr=$returnstr.substr($sourcestr,$i,3); 
    $i=$i+3; 
    $n++; 
    }elseif ($ascnum>=192) 

    $returnstr=$returnstr.substr($sourcestr,$i,2); 
    $i=$i+2; 
    $n++; 
    }else 

    $returnstr=$returnstr.substr($sourcestr,$i,1); 
    $i=$i+1; 
    $n=$n+0.5; 


    return $returnstr; } 
    ----------------------------------------------------------------------
    big5&gb2312
    function csubstr($str,$start,$len) 
       {   
          $strlen=strlen($str); 
          if ($start>=$strlen) 
             return $str; 
          $clen=0; 
          for($i=0;$i<$strlen;$i++,$clen++)   
          {        
             if(ord(substr($str,$i,1))>0xa0) 
             { 
                if ($clen>=$start) 
             $tmpstr.=substr($str,$i,2); 
             $i++; 
              } 
              else 
              {  
           if ($clen>=$start) 
                    $tmpstr.=substr($str,$i,1); 
               } 
               if ($clen>=$start+$len) 
            break; 
         }   
          return $tmpstr;   
       } 
      

  11.   

    2字節的
    function ExecuteQuery($sql,$lan="Big5") //&#60772;
    {
    $res;
    $sql=trim($sql);
    if (strlen($sql)==0)
    return false;

    if (strtoupper(substr($sql,0,4))=="SELE")
    $action="select";
    else
    $action="execute";

    $result=mysql_query($sql);
    if (!$result)
    {
    $error_msg=mysql_error();
    require "error.php";
    }
    else
    {
    if ($action=="execute")
    return true;
    else
    {
    /*
    if ($lan=="BIG5")
    {
    $tgtob=new gtob();
    }
    */

    while($row=mysql_fetch_array($result))
    {


    while(list($k,$v)=each($row))
    {
    if (is_string($v))
    /*
    if ($lan=="BIG5")
    {
    $vv=trim($tgtob->gbtobig5($v));
    }
    else
    */
    $vv=trim($v);
    $row[$k]=$vv;
    }

    $res[]=$row;
    }
    mysql_free_result($result);
    return $res;

    }
    } }