·您的位置: 首页 » 纯粹博客 » 技术探讨 » UTF-8 和 GB2312 截取固定长度字符串的处理

UTF-8 和 GB2312 截取固定长度字符串的处理

作者:faisun 发布日期:2007-03-23

我曾发过一篇 《高效的固定长度字符串的截取函数》 ,可是这个方法只适用于 GB2312 的编码。因为在 GB2312 下,汉字占两个字符,在页面中刚好也是占两倍的地方显示。

可是在 UTF-8 编码中,汉字却是占2-3个字符。这个不确定性给截取造成了挺大的麻烦。目前我用的方法只能是循环:

<?
function toFixLen($str, $len) { // 固定长度字符串的截取,UTF-8
    $str=trim($str)

    $pa = "/[\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]/";
    preg_match_all($pa, $str, $t_string);

    $lt = count($t_string[0]);
    $str = '';
    $l = 0 ;
    foreach($t_string[0] as $k=>$s){
        $l += (strlen($s)==1?1:2);
        if($l>=$len-3 && $k!=$lt){
            $str .= '...';
            break;
        }else{
            $str .= $s;
        }
    }

    return $str;
}

?>

-= 文章分类 =-
文 章 搜 索
关键词:
类型:
范围:
最新发表
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1