最新消息:

PHP函数第15款:gbk中文截取,1个中文字节为2个英文字节 cn_substr

PHP扩展函数 杨红伟 807浏览 0评论

一:函数简介

在第14节,我们说到了utf8的中文截取函数,那么这一节,我们就讲到gbk的中文截取函数。

演示地址: http://www.ijquery.cn/phpfunction/cn_substr/demo1.php

下载地址: http://www.ijquery.cn/phpfunction/cn_substr/cn_substr.zip

二:函数说明及应用

echo cn_substr($str,10);

返回的结果是,即5个中文字符

中华人民共

三:函数代码

/**
 *  中文截取2,单字节截取模式
 *
 * @access    public
 * @param     string  $str   需要截取的字符串
 * @param     int  $slen  	 截取的长度
 * @param     int  $startdd  开始标记处
 * @return    string
 */
if ( ! function_exists('cn_substr'))
{
    function cn_substr($str, $slen, $startdd=0)
    {
        $restr = '';
        $c = '';
        $str_len = strlen($str);
        if($str_len < $startdd+1)
        {
            return '';
        }
        if($str_len < $startdd + $slen || $slen==0)
        {
            $slen = $str_len - $startdd;
        }
        $enddd = $startdd + $slen - 1;
        for($i=0;$i<$str_len;$i++)
        {
            if($startdd==0)
            {
                $restr .= $c;
            }
            else if($i > $startdd)
            {
                $restr .= $c;
            }

            if(ord($str[$i])>0x80)
            {
                if($str_len>$i+1)
                {
                    $c = $str[$i].$str[$i+1];
                }
                $i++;
            }
            else
            {
                $c = $str[$i];
            }

            if($i >= $enddd)
            {
                if(strlen($restr)+strlen($c)>$slen)
                {
                    break;
                }
                else
                {
                    $restr .= $c;
                    break;
                }
            }
        }
        return $restr;
    }
}

四:函数图片

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址