php截取字符串,一个汉字按两个字符计算

<?php
header('http-equiv="Content-Type" content="text/html; charset=UTF-8"');
/**
 *
 * Return part of a string(Enhance the function substr())
 *
 * @author                  Donghui Shang <shdh0929@yahoo.com.cn>
 * @param string  $String  the string to cut.
 * @param int     $Length  the length of returned string.
 * @param booble  $Append  wether append "...": false|true
 * @return string           the cutted string.
 */
function Cut_Str($String,$Length,$Append = false)
{
    if (strlen($String) <= $Length )
    {
        return $String;
    }
    else
    {
        $I = 0;
        $k = 0;
        while ($k < $Length)
        {
            $StringTMP = substr($String,$I,1);
            if ( ord($StringTMP) >=224 )
            {
                $StringTMP = substr($String,$I,3);
                $I = $I + 3;
                $k += 2;
            }
            elseif( ord($StringTMP) >=192 )
            {
                $StringTMP = substr($String,$I,2);
                $I = $I + 2;
                $k += 2;
            }
            else
            {
                $I = $I + 1;
                $k += 1;
            }
            if ('' == $StringTMP)
            {
                break;
            }else {
                $StringLast[] = $StringTMP;
            }
        }
        if ($k > $Length)
        {
            $StrLast = join("", array_slice($StringLast, 0, $Length));       
            if($Append)
            {
                $StrLast .= "...";
            }
        }else {
            $StrLast = $String;
        }
        return $StrLast;
    }
}

$String = "CodeBit.cn -- 简单、精彩、通用";
$Length = "25";
$Append = true;
echo Cut_Str($String,$Length,$Append);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值