无乱码截取字符串,中英文混合(转)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无乱码截取字符串,中英文混合(转)相关的知识,希望对你有一定的参考价值。

//无乱码截取字符串,中英文混合
    function left($str, $len, $charset="utf-8"){
        //如果截取长度小于等于0,则返回空
        if( !is_numeric($len) or $len <= 0 ){
            return "";
        }
        //如果截取长度大于总字符串长度,则直接返回当前字符串
        $sLen = strlen($str);
        if( $len >= $sLen ){
            return $str;
        } 
        if ( strtolower($charset) == "utf-8" ){
            $len_step = 3; 
        }else{
            $len_step = 2; 
        } 
        $len_i = 0; 
        $substr_len = 0;
        for( $i=0; $i < $sLen; $i++ ){
            if ( $len_i >= $len ) break; 
            if( ord(substr($str,$i,1)) > 0xa0 ){
                $i += $len_step - 1;
                $substr_len += $len_step;
            }else{ 
                $substr_len ++;
            }
            $len_i ++;
        }
        $result_str = substr($str,0,$substr_len );
        return $result_str;
    }

 

以上是关于无乱码截取字符串,中英文混合(转)的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现中文截取无乱码

ASCIIUnicode和UTF-8编码的区别;中英文混合截取

php截取中文字符串无乱码的方法

php截取中文无乱码

打印机打印字符串转字节数组截取半个中文导致的乱码问题

java 如何对中英文和符号数字混合的字符串进行截取,其中包含各种括号( ( [ < >] ) )?