我用的那个 字符串截取函数  截取前200个字符最后一个 汉字有的时候只能截取一半 就变成了 "?" 请问怎么破?

解决方案 »

  1.   

    肯定截取中文的时候乱码了
    截取的函数哟问题
    我给你提供有个
    function sub_str($str, $length = 0, $append = true)
    {
        $str = trim($str);
        $strlength = strlen($str);    if ($length == 0 || $length >= $strlength)
        {
            return $str;
        }
        elseif ($length < 0)
        {
            $length = $strlength + $length;
            if ($length < 0)
            {
                $length = $strlength;
            }
        }    if (function_exists('mb_substr'))
        {
            $newstr = mb_substr($str, 0, $length, EC_CHARSET);
        }
        elseif (function_exists('iconv_substr'))
        {
            $newstr = iconv_substr($str, 0, $length, EC_CHARSET);
        }
        else
        {
            //$newstr = trim_right(substr($str, 0, $length));
            $newstr = substr($str, 0, $length);
        }    if ($append && $str != $newstr)
        {
            $newstr .= '...';
        }    return $newstr;
    }
      

  2.   


    <?php
    function c_substr($string, $from, $length = null){
        preg_match_all('/[x80-xff]?./', $string, $match);
        if(is_null($length)){
            $result = implode('', array_slice($match[0], $from));
        }else{
            $result = implode('', array_slice($match[0], $from, $length));
        }
        return $result;
    }
    $str = "zhon华人min共和guo";
    $from = 3;
    $length = 7;
    echo(c_substr($str, $from, $length));
    // 输出: n华人min共
    //还有utf-8的function utf8_substr($str,$start) {
    $null = "";
       preg_match_all("/./u", $str, $ar);
       if(func_num_args() >= 3) {
           $end = func_get_arg(2);
           return join($null, array_slice($ar[0],$start,$end));
       } else {
           return join($null, array_slice($ar[0],$start));
       }
    }
    ?>