ホームページ > バックエンド開発 > PHPチュートリアル > 下位バイトかどうかを判断する方法を教えてください。

下位バイトかどうかを判断する方法を教えてください。

WBOY
リリース: 2016-06-23 14:25:53
オリジナル
1144 人が閲覧しました

<?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から始まることはまだ文字化けされています。 0xa0 の決定とは何ですか?

興味があるのですが、彼は gbk を使用していますが、81 で始まる漢字に出会ったらどうすればよいでしょうか?

gb2312 バイトの内部コードは 0xa1 から始まります


0xa0 を設定する基準は何ですか?

興味があるのですが、彼は gbk を使用していますが、81 で始まる漢字に出会ったらどうすればよいでしょうか?



さて、ボス、この問題については心配しないでください。下位バイトがインターセプトされたかどうかを判断する方法を教えていただけますか? ありがとうございます

アルゴリズムを勉強しているのかと思いました、mb_substr を使用してください

勉強しているのだと思いましたアルゴリズム、mb_substr を使用してください


これを試してみましたが、うまくいきませんでした
試してみてください

<?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));?>
ログイン後にコピー


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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート