PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP中高级 » 字符串截取之繁体中文(utf8)
本页主题: 字符串截取之繁体中文(utf8) 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

phpwhy

头衔:总管 总管
该用户目前不在线
级别: 管理员
精华: 3
发帖: 633
威望: 550 点
金钱: 5560 PYMB
贡献值: 0 点
在线时间:12(小时)
注册时间:2005-09-15
最后登录:2008-07-15

字符串截取之繁体中文(utf8)


顶端 Posted: 2005-10-14 08:21 | [楼 主]
phpwhy

头衔:总管 总管
该用户目前不在线
级别: 管理员
精华: 3
发帖: 633
威望: 550 点
金钱: 5560 PYMB
贡献值: 0 点
在线时间:12(小时)
注册时间:2005-09-15
最后登录:2008-07-15

字符串截取之繁体中文(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]
顶端 Posted: 2005-10-14 08:21 | 1 楼
纯粹误会



该用户目前不在线
级别: 新手上路
精华: 0
发帖: 3
威望: 0 点
金钱: 0 PYMB
贡献值: 0 点
在线时间:0(小时)
注册时间:2005-11-11
最后登录:1970-01-01


晕,那么长,下来先收着,哈哈,感谢
顶端 Posted: 2005-11-11 03:46 | 2 楼
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP中高级

现在时间:09-05 14:51 Copyright © 2006 phpwhy.com 版权所有
浙ICP备05060669号

点击这里给我发消息关于我们 - 合作联系