php实现拦截中文字符串不乱码的方法首先我们要知道:汉字在gbk编码下占用2个字节,在utf-8编码下占用3个字符ordphp部分中的()函数返回字符串第一个字符的ASCII值。汉字的ASCII值大于0xa0。关键是要判断要截取的字符串是汉字还是英文字符。用ord(substr($str,$start,1))>0xa0可以判断,大于它就是中文,否则就是英文。实现代码如下:[PHP]查看明文复制代码?0xa0){$pos+=$bite;//如果是汉字,则位置加上汉字的长度;}else{$pos+=1;}}//开始拦截if($length==""){returnsubstr($str,$pos);//如果$length为空,从头到尾截取}else{if($length<0){$length=0;}$string="";for($i=0;$i<$length;$i++){//判断字符串中的每个字符是中文还是英文if(ord(substr($str,$pos,1))>0xa0){//如果是汉字,$string.=substr($str,$pos,$bite);//必须以中文为准$pos+=$bite;}else{//如果是英文字符$string.=substr($str,$pos,1);$pos+=1;}}return$string;}}$str="itcast-php传智播客学院";echomy_substr($str,0);//从第一条输出到最后一条,输出传智播客itcast-php学院echo'
';echomy_substr($str,0,4,3);//输出传智播客echo'
';echomy_substr($str,11);//输出php学院?>更多技术资料请关注:gzitcast