- 论坛徽章:
- 0
|
看到网上很多人提到,截取中英混排字符串时候宽度不一致使页面难看的问题。我在一位仁兄写的截取utf8字符串函数基础上,稍微微更改了一下实现了按实际长度来截取中英混排字符串。大致按一个汉语字符的宽度相当于两个英文字符来计算。
具体实现如下:
function subUTF8($string, $length = 80, $etc = '...')
{
$strcut = '';
$strLength = 0;
$width = 0;
if(strlen($string) > $length) {
//将$length换算成实际UTF8格式编码下字符串的长度
for($i = 0; $i = strlen($string) )
break;
if ( $width>=$length){
break;
}
//当检测到一个中文字符时
if( ord($string[$strLength]) > 127 ){
$strLength += 3;
$width += 2; //大概按一个汉字宽度相当于两个英文字符的宽度
}
else{
$strLength += 1;
$width += 1;
}
}
return substr($string, 0, $strLength).$etc;
} else {
return $string;
}
}
echo subUTF8("他进了房间啊都是客积分卡上的纠纷",20);
echo "
".subUTF8("fjdaskfjkdsajflkjdslakfjlkdsjflkjdsa",20);
echo "
".subUTF8("fdsf防静电ajfldkjaf",20);
经测试发现在firfox下效果比较好,firfox下utf8字符中英宽度比例接近2:1的比例。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/49103/showart_393723.html |
|