如果是3就是错啦,中间带一个英文字符,那显示出来会是4.这里你根本不知道中间有几个汉字.使用等宽字体时,页面布局比较乱.

以下是php处理的方法,不知道perl该怎么做
<?
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;
}

?>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。
 要在此论坛发帖,请发电子邮件到 [email protected]
 要退订此论坛,请发邮件至 [email protected]
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

回复