它山之石可以攻玉

键盘上的生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

php统计中英文混合的文章字数

Posted on 2018-03-26 16:27  陈达辉  阅读(820)  评论(0编辑  收藏  举报
function ccStrLen($str) #计算中英文混合字符串的长度 
{ 
$ccLen=0; 
$ascLen=strlen($str); 
$ind=0; 
$hasCC=ereg("[xA1-xFE]",$str); #判断是否有汉字 
$hasAsc=ereg("[x01-xA0]",$str); #判断是否有ASCII字符 
if($hasCC && !$hasAsc) #只有汉字的情况 
return strlen($str)/2; 
if(!$hasCC && $hasAsc) #只有Ascii字符的情况 
return strlen($str); 
for($ind=0;$ind<$ascLen;$ind++) 
{ 
if(ord(substr($str,$ind,1))>0xa0) 
{ 
$ccLen++; 
$ind++; 
} 
else 
{ 
$ccLen++; 
} 
} 
return $ccLen; 
}

  

function ccStrLeft($str,$len) #从左边截取中英文混合字符串 
{ 
$ascLen=strlen($str); if($ascLen<=$len) return $str; 
$hasCC=ereg("[xA1-xFE]",$str); #同上 
$hasAsc=ereg("[x01-xA0]",$str); 
if(!$hasCC) return substr($str,0,$len); 
if(!$hasAsc) 
if($len & 0x01) #如果长度是奇数 
return substr($str,0,$len+$len-2); 
else 
return substr($str,0,$len+$len); 
$cind=0;$flag=0; 
while($cind<$ascLen) 
{ 
if(ord(substr($str,$cind,1))<0xA1) $flag++; 
$cind++; 
} 
if($flag & 0x01) 
return substr($str,0,$len); 
else 
return substr($str,0,$len-1); 
}