插件窝 干货文章 php截取英文加中文防止乱码

php截取英文加中文防止乱码

php 字符串截取 防止乱码 826    来源:插件窝    2019-08-22

网站开发过程中,文章描述需要常常需要用到截取指定长度的字符来保持样式的一致宽度,但是字符中有时候会存在标点符号和字母或者数字的组合,往往不能用3的倍数来做整除算长度,下面根据二进制封装了一个函数保证截取的字符串不会出现乱码报错

/**
* @param $str
* @param $start
* @param $len
* @return string
* 截取英文加中文防止乱码
*/
function chinesesubstr($str,$start,$len){
   $strlen = $len - $start;    //定义需要截取字符的长度
   $tmpstr = '';
   for($i=0;$i<$strlen;$i++){                   //使用循环语句,单字截取,并用$tmpstr.=$substr(?,?,?)加起来
       if(ord(substr($str,$i,1))>0xa0){     //ord()函数取得substr()的第一个字符的ASCII码,如果大于0xa0的话则是中文字符
           $tmpstr.=substr($str,$i,3);        //设置tmpstr递加,substr($str,$i,3)的3是指三个字符当一个字符截取(因为utf8编码的三个字符算一个汉字)
           $i+=2;
       }else{                                             //其他情况(英文)按单字符截取
           $tmpstr.=substr($str,$i,1);
       }

   }
   return $tmpstr;
}