php截取字符串

本文介绍了一个用于截取字符串的PHP函数strCut,该函数能够根据指定的长度、开始位置及编码方式来截取字符串,并在截取后的字符串末尾添加自定义的后缀。此函数支持UTF-8和非UTF-8编码,适用于多种应用场景。
摘要由CSDN通过智能技术生成

/**
 * @@Description 截取字符串
 * @param String(字符串) $key
 * @param Int(字符串截取长度) $length
 * @param String(后缀eg:...) $postfix
 * @param Int(字符串开始位置) $start
 * @param String(编码) $code
 * @return String
 */

function strCut( $key, $length = 1, $postfix = "...", $start = 0, $code = 'UTF-8' ) {
    if( 'UTF-8' == $code ) {
        $pattern = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
        preg_match_all( $pattern, $key, $result );
        if( count( $result[0] ) - $start > $length ) {
            return join( '', array_slice( $result[0], $start, $length ) ).$postfix;
        }
        return join( '', array_slice( $result[0], $start, $length ) );
    }else{
        $start = $start * 2;
        $length = $length * 2;
        $strlen = strlen( $key );
        $tmpstr = '';

        for ( $i = 0; $i < $strlen; $i++ ) {
            if( $i >= $start && $i < ($start + $length) ) {
                if( ord( substr( $key, $i, 1 ) ) > 129 ) {
                    $tmpstr.= substr( $key, $i, 2 );
                }else{
                    $tmpstr.= substr( $key, $i, 1 );
                }
            }
            if( ord( substr( $key, $i, 1 ) ) > 129 ) {
                $i++;
            }
        }

        if( strlen( $tmpstr ) < $strlen ) {
            $tmpstr.= $postfix;
        }
        return $tmpstr;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值