免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2142 | 回复: 0
打印 上一主题 下一主题

php截取utf8字符串——按实际宽度截取 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-02 03:13 |只看该作者 |倒序浏览
   看到网上很多人提到,截取中英混排字符串时候宽度不一致使页面难看的问题。我在一位仁兄写的截取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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP