字符串截取之繁体中文(utf8)
网上流传了许多中文字符串截取的函数,但是经过测试我发现,对utf8下的繁体中文还是不行的,经过查阅台湾网站的资料,我做了一个函数可以截取出繁体字
[code]
function substrgb( $str, $maxlen, $type=1){ //截取一定长度的字串 //substrgb(输入的字串, 开始, 长度, 返回类型(1、暂空;2、去除html格式的字串)) if ( $type == 2) { $str = strip_tags($str); } /* if(strlen($str) > $len) { for ( $i=0; $i<$start+$len-2; $i++){ //截字符 $tmpstr =(ord($str[$i])>=127)?$str[$i].$str[++$i]:$str[$i]; //累加字符 if ( $i>=$start) $tmp .= $tmpstr; } return $tmp.'…'; } else { return $str; }*/ $i = 0; $l = 0; $len = strlen($str); $return_str = $str; $f = true; while ($i <= $len) { if (ord($str{$i}) < 0x80) { $l++; $i++; } else if (ord($str{$i}) < 0xe0) { $l++; $i += 2; } else if (ord($str{$i}) < 0xf0) { $l += 2; $i += 3; } else if (ord($str{$i}) < 0xf8) { $l += 1; $i += 4; } else if (ord($str{$i}) < 0xfc) { $l += 1; $i += 5; } else if (ord($str{$i}) < 0xfe) { $l += 1; $i += 6; } if (($l >= $maxlen - 1) && $f) { $return_str = substr($str, 0, $i); $f = false; } } return $return_str; }
$text_des="業務員下線交易明細業務員下線交易明細業務員下線交易明細"; $text_des=substrgb($text_des1,9,2); echo $text_des; ?>[/code]
|