> 백엔드 개발 > PHP 튜토리얼 > 求教,如何判断是否是低字节?

求教,如何判断是否是低字节?

WBOY
풀어 주다: 2016-06-23 14:25:53
원래의
1134명이 탐색했습니다.

<?phpheader("content-type:text/html;charset=gbk");$str="j这是ces测试dkfjdksj";function substr_gbk($str,$start,$end){	$temp="";	for($i=$start;$i<=$end;$i++)	{		if(ord($str{$i})>0xa0)		{			$temp.=substr($str,$i,2);			$i++;		}else		{			$temp.=substr($str,$i,1);		}	}	return $temp;}echo substr_gbk($str,1,10); //从高字节截取正常echo substr_gbk($str,2,10); //从低字节截取出现乱码?>
로그인 후 복사


以上代码从高字节截取没有问题,但如果从低字节截取出现乱码
请问有知道如果判断高低字节的办法吗?


回复讨论(解决方案)

本帖最后由 xuzuning 于 2013-10-30 11:08:53 编辑

$str="j这是ces测试dkfjdksj"; function substr_gbk($str,$start,$end){    $temp="";    for($i=0; $i<$start; $i++) if(ord($str{$i})>0xa0) $i++; //加上这行    for(;$i<=$end;$i++)    {        if(ord($str{$i})>0xa0)        {            $temp.=substr($str,$i,2);            $i++;        }else        {            $temp.=substr($str,$i,1);        }    }    return $temp;} echo substr_gbk($str,1,10); //这是ces测试echo substr_gbk($str,2,10); //是ces测试
로그인 후 복사

定 0xa0 的准则是什么?

gb2312 字节内码从 0xa1 开始

定 0xa0 的准则是什么?

就是从0xa1也一样是乱码啊

<?phpheader("content-type:text/html;charset=gbk");$str="c这是ces测试dkfjdksa";function substr_gbk($str,$start,$end){	for($i=0;$i<strlen($str);$i++)	{		if(ord(substr($str,$i,1))>0xa0)		{			$temp[]=substr($str,$i,2);			$i++;		}else		{			$temp[]=substr($str,$i,1);		}	} 	return implode("",array_slice($temp,$start,$end));}print_r(substr_gbk($str,0,3));?>
로그인 후 복사


用这个土办法倒是可以,效率太低
大家有什么好办法吗

gb2312 字节内码从 0xa1 开始


定 0xa0 的准则是什么?
我就奇怪,他用的是gbk,遇到81开头的汉字怎么办?


gb2312 字节内码从 0xa1 开始


定 0xa0 的准则是什么?
我就奇怪,他用的是gbk,遇到81开头的汉字怎么办?


嗯 老大咱别纠结这个问题行吗 您告诉我怎么判断如果是截取到低字节如何判断就行了 谢谢了

还以为你研究算法呢,用mb_substr

还以为你研究算法呢,用mb_substr

这个试过了,不行的
您试下

<?phpheader("content-type:text/html;charset=gbk");$str="这是ces测试dkfjdksa";echo mb_substr($str,1,5); //乱码?>
로그인 후 복사

mb_substr($str,1,5 ,'gbk')

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿