让我们一起爱米兰
站内搜搜:
移动设备
请扫描二维码
或访问
m.milan100.com
您所在的位置 -> 米兰百分百 -> PHP -> php按中文字数切割字符串

php按中文字数切割字符串

点击数:603 发表时间:2015-11-20 14:37:17 作者: 来源链接:
分享到:
分享到微信
/** 
 * 按中文字数切割字符串,英文和符号算半个 
 * @param string $sourcestr 源字符串 
 * @param int $cutlength 字数 
 * @return string 切割后的字符串 
 */  
function cutStr($sourcestr, $cutlength)  
{  
   $returnstr='';  
   $i=0;  
   $n=0;  
   $str_length=strlen($sourcestr);//字符串的字节数  
   while (($n<$cutlength) and ($i<=$str_length))  
    {  
      $temp_str=substr($sourcestr,$i,1);  
      $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码  
      if ($ascnum>=224)    //如果ASCII位高与224,  
      {  
         $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符  
         $i=$i+3;            //实际Byte计为3  
         $n++;            //字串长度计1  
      }  
       elseif ($ascnum>=192) //如果ASCII位高与192,  
      {  
         $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符  
         $i=$i+2;            //实际Byte计为2  
         $n++;            //字串长度计1  
      }  
       elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,  
      {  
         $returnstr=$returnstr.substr($sourcestr,$i,1);  
         $i=$i+1;            //实际的Byte数仍计1个  
         $n++;            //但考虑整体美观,大写字母计成一个高位字符  
      }  
       else                //其他情况下,包括小写字母和半角标点符号,  
      {  
         $returnstr=$returnstr.substr($sourcestr,$i,1);  
         $i=$i+1;            //实际的Byte数计1个  
         $n=$n+0.5;        //小写字母和半角标点等与半个高位字符宽...  
      }  
    }  
          if ($str_length>$cutlength){  
          $returnstr = $returnstr . "...";//超过长度时在尾处加上省略号  
      }  
     return $returnstr;  
  
}


3
很 好
3
一 般
3
差 劲
热门新闻
相关文章
上一篇: php递归复制目录及下面的文件
下一篇: php发送邮件类
评论区
匿名

返回首页 | 收藏本页 | 回到顶部
Copyright 2010. 米兰百分百 Powered By Bridge.
京ICP备15050557号