ホームページ > バックエンド開発 > PHPチュートリアル > PHP は UTF-8 文字列を正しく解析します_PHP チュートリアル

PHP は UTF-8 文字列を正しく解析します_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:56:14
オリジナル
931 人が閲覧しました

UTF-8 文字列を正しく解析する PHP が必要な友人は、それを参照できます。

コードは次のとおりです コードをコピー

$str = '今日はとても幸せです、みんなはコーラチキンウィングを食べるためにKFCに行くことに決めました!!!';

/*
$str はインターセプトされる文字列です
$len はインターセプトされた文字数です
*/
関数 utf8sub($str,$len) {
if($len 戻ります '';
}

$offset = 0; // 上位バイトをインターセプトするときのオフセット
$chars = 0; // インターセプトされた文字数
$res = ''; // インターセプトされた結果文字列を保存します

while($chars // まず文字列の最初のバイトを取得します
//10進数に変換します
//バイナリに変換します
$high = ord(substr($str,$offset,1));

// '$high=' をエコーし​​ます。$high .'
';

if($high == null ){ // 上位ビットが null の場合、最後までフェッチされたことを証明し、直接ブレークします
休憩
}
if(($high>>2) === 0x3F){ // 上位ビットを右に 2 ビットシフトし、バイナリ 111111 と比較します。同じ場合は 6 バイトを取ります
// 2バイトを抽出します
$count = 6;
}else if(($high>>3) === 0x1F){ // 上位ビットを右に 2 ビットシフトし、バイナリ 11111 と比較します。同じ場合は 5 バイトを取ります
// 3 バイトをインターセプトします
$count = 5;
}else if(($high>>4) === 0xF){ // 上位ビットを右に 2 ビットシフトし、バイナリ 1111 と比較します。同じ場合は 4 バイトを取ります

// 4バイトを抽出
$count = 4;
}else if(($high>>5) === 0x7){ // 上位ビットを右に 2 ビットシフトし、バイナリの 111 と比較します。同じ場合は 3 バイトを取ります

// 5バイトを抽出します
$count = 3;
}else if(($high>>6) === 0x3){ // 上位ビットを右に 2 ビットシフトし、バイナリ 11 と比較し、同じであれば 2 バイトを取る
// 6バイトを抽出します
$count = 2;
}else if(($high>>7) === 0x0){ // 上位ビットを右に 2 ビットシフトし、バイナリの 0 と比較し、同じであれば 1 バイトを取る
$count = 1;
}
// エコー '$count='.$count.'
';

$res .= substr($str,$offset,$count); // 文字を取り出して $res 文字列に接続します
$chars += 1; // インターセプトされた文字数 +1
$offset += $count; // 上位オフセットをインターセプトし、$count バイトだけ後方に移動します
}
$res を返します;
}

echo utf8sub($str,100);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632169.html技術記事 PHP で UTF-8 文字列を正しく解析するのに助けが必要な友人は、これを参照してください。 コードは次のとおりです。 コードをコピー $str = '今日はとても幸せなので、コーラの手羽先を食べに KFC に行くことにしました!!!' /* $str はインターセプトされる単語です...
;
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート