画星星高手

It nerver rains but it pours.

解决PHP中substr截取中文字符串乱码的问题

直接方法

使用mbstring库提供的方法:mb_substr,但是这个库默认不是启用的,有些服务器上还需要重新编译才可以使用。

自己实现一个substr方法

不多说,直接贴代码

class QString
{
    public static function Sub($str, $start, $length, $append = true)
    {
        $str = trim($str);

        $strlength = strlen($str);

        if ($length >= $strlength)
        {
            return $str;  //截取长度大于等于本字符串的长度,返回字符串本身
        } elseif ($length < 0)  //如果截取长度为负数
        {
            $length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度
            if ($length < 0)
            {
                $length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度
            }
        } elseif ($length == 0)
        {
            $length = $strlength - $start;  //截取长度为0代表截取剩下的字符串
        }


        if (function_exists('mb_substr'))
        {
            $newstr = mb_substr($str, $start, $length, "utf-8");
        } elseif (function_exists('iconv_substr'))
        {
            $newstr = iconv_substr($str, $start, $length, "utf-8");

        } else
        {
            //$newstr = trim_right(substr($str, 0, $length));
            $newstr = substr($str, $start, $length);
        }

        if ($append && $str != $newstr)
            $newstr .= '...';

        return trim($newstr, '.');
    }
}
点赞

发表评论