elixiat 发表于 2017-4-11 12:20:14

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)>$fLen) {
return join("",array_slice($ar,$fStart,$fLen))."...";
}
return join("",array_slice($ar,$fStart,$fLen));
} else {
return join("",array_slice($ar,$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;
}
}
?>
页: [1]
查看完整版本: php 中文字符串截取函数-->比较好的