Function msubstr ($fStr, $fLen, $option = false,$fCode = "UTF-8") {
$fStart = 0;
switch (strtoupper($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() >= 2) {
if (count($ar[0])>$fLen) {
return join("",array_slice($ar[0],$fStart,$fLen)).($option==true?"...":"");
}
return join("",array_slice($ar[0],$fStart,$fLen));
} else {
return join("",array_slice($ar[0],$fStart,$fLen));
}
break;
default: //GBK or GB2312
$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 .= ($option==true?"...":"");
return $tmpstr;
}
}
php截字函数(支持UTF8和GB2312)
最新推荐文章于 2024-09-21 13:09:33 发布