首页 --> 知识问答

自助网站成功案例

成功案例分类
自助网站型    更多案例

一点通案例

手工网站型

联系我们

电话:010-64681504 010-64684094

传真:010-64673024

邮箱:888@edo2008.com

24小时值班热线

手 机: 013693193565


php中文字符串截取函数

#============================================================================
# 中文字符串截取函数
# 参数说明:
# $fStr:需要截最的原始字符串;
# $fStart:从第几个汉字后开始载取,从头开始截取使用 0
# $fLen:截取几个汉字
# $fCode:原始字符串的编码方式,默认为 gb2312 或 big5,UTF-8 按 UTF-8 编码方式截取
#----------------------------------------------------------------------------
function msubstr ($fStr, $fStart, $fLen, $fCode = "") {
    switch ($fCode) {
        case "UTF-8" :
            preg_match_all("/[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]/", $fStr, $ar);  
            if(func_num_args() >= 3) {  
                if (count($ar[0])>$fLen) {
                    return join("",array_slice($ar[0],$fStart,$fLen));
                }
                return join("",array_slice($ar[0],$fStart,$fLen));
            } else {  
                return join("",array_slice($ar[0],$fStart));
            }
            break;
        default:
            $fStart = $fStart*2;
            $fLen   = $fLen*2;
            $strlen = strlen($fStr);
            for ( $i = 0; $i < $strlen; $i++ ) {
                if ( $i >= $fStart && $i < ( $fStart+$fLen ) ) {
                    if ( ord(substr($fStr, $i, 1)) > 129 ) $tmpstr .= substr($fStr, $i, 2);
                    else $tmpstr .= substr($fStr, $i, 1);
                }
                if ( ord(substr($fStr, $i, 1)) > 129 ) $i++;
            }
            if ( strlen($tmpstr) < $strlen ) $tmpstr;
            Return $tmpstr;
    }
}