ホームページ php教程 php手册 PHP が UTF-8 文字列を正しく解析するスキル application_php の基礎

PHP が UTF-8 文字列を正しく解析するスキル application_php の基礎

May 16, 2016 am 09:00 AM
utf-8 解析する

「PHPとMYSQLを学ぶ - 文字エンコード(前編)」では、UnicodeとUTF-8の変換関係を紹介し、UTF-8のエンコード規則をまとめ、このエンコード規則に基づいてUTF-8エンコード解析プログラムを作成します。と書かれています。以下は PHP の実装です:

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

/*
プログラム関数 $str は、中国語と英語が混在した UTF-8 エンコード文字列です。
この文字列は、UTF-8 エンコード規則に従って正しくデコードされ、表示されます。 。
*/


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

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

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

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

// echo '$high='. $high .'
' ;

if($high == null ){ // 上位ビットが null の場合は最後までフェッチされたことを証明し、直接ブレークします
break;
}
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 と比較し、同じであれば、 take 2 bytes
// 6 バイトをインターセプト
$count = 2;
}else if(($high >>7) === 0x0){ // 上位ビットを右に 2 シフトしますビット、バイナリ 0 と比較し、同じ場合は 1 バイトを取得します
$count = 1;
}
// echo ' $count='.$count.'
' ;

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

echo utf8sub($ str,100);
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでint型をstringに変換する方法を詳しく解説 PHPでint型をstringに変換する方法を詳しく解説 Mar 26, 2024 am 11:45 AM

PHPでint型をstring型に変換する方法を詳しく解説 PHPの開発では、int型をstring型に変換する必要に遭遇することがよくあります。この変換はさまざまな方法で実現できますが、この記事では、読者の理解を深めるために、具体的なコード例とともに、いくつかの一般的な方法を詳しく紹介します。 1. PHP の組み込み関数 strval() を使用する PHP には、さまざまな型の変数を文字列型に変換できる組み込み関数 strval() が用意されています。 int型をstring型に変換する必要がある場合、

python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 Apr 02, 2024 pm 03:58 PM

1. まず pycharm を開いて、pycharm ホームページに入ります。 2. 次に、新しい Python スクリプトを作成し、右クリックして [新規] をクリックし、[Pythonfile] をクリックします。 3. 文字列、コード: s="-" を入力します。 4. 次に、文字列内のシンボルを 20 回繰り返す必要があります (コード: s1=s*20)。 5. 印刷出力コード、コード: print(s1) を入力します。 6. 最後にスクリプトを実行すると、下部に戻り値が表示されます。 - 20 回繰り返しました。

Golang 文字列が指定された文字で終わるかどうかを判断する方法 Golang 文字列が指定された文字で終わるかどうかを判断する方法 Mar 12, 2024 pm 04:48 PM

タイトル: Golang で文字列が特定の文字で終わるかどうかを判断する方法 Go 言語では、文字列が特定の文字で終わるかどうかを判断する必要があることがあります。これは文字列を処理するときに非常に一般的です。この記事では、Go 言語を使用してこの関数を実装する方法と、参考用のコード例を紹介します。まず、Golang で文字列が指定された文字で終わるかどうかを判断する方法を見てみましょう。 Golang の文字列内の文字はインデックス作成によって取得でき、文字列の長さは次のようになります。

Go言語で文字列をインターセプトする方法 Go言語で文字列をインターセプトする方法 Mar 13, 2024 am 08:33 AM

Go 言語は、文字列インターセプトを含む豊富な文字列処理機能を提供する強力で柔軟なプログラミング言語です。 Go 言語では、スライスを使用して文字列をインターセプトできます。次にGo言語で文字列をインターセプトする方法を具体的なコード例を交えて詳しく紹介します。 1. スライスを使用して文字列をインターセプトする Go 言語では、スライス式を使用して文字列の一部をインターセプトできます。スライス式の構文は次のとおりです。slice:=str[start:end]where, s

Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Mar 12, 2024 pm 09:42 PM

Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Golang でプログラミングする場合、文字列が特定の文字で始まるかどうかを確認する必要がある状況によく遭遇します。この要件を満たすために、Golang の strings パッケージによって提供される関数を使用してこれを実現できます。次に、Golangを使って文字列が特定の文字で始まるかどうかを確認する方法を、具体的なコード例とともに詳しく紹介します。 Golang では、strings パッケージの HasPrefix を使用できます。

PHPにおけるmidpointの意味と使い方の分析 PHPにおけるmidpointの意味と使い方の分析 Mar 27, 2024 pm 08:57 PM

【PHPにおけるミッドポイントの意味と使い方の分析】 PHPでは、ミッドポイント(.)は2つの文字列やオブジェクトのプロパティやメソッドを接続するためによく使われる演算子です。この記事では、PHP における中間点の意味と使用法を詳しく掘り下げ、具体的なコード例を示して説明します。 1. 文字列中間点演算子の接続 PHP での最も一般的な使用法は、2 つの文字列を接続することです。 2 つの文字列の間に . を置くと、それらをつなぎ合わせて新しい文字列を形成できます。 $string1=&qu

Golang 文字列変更の詳細な説明: 動的な調整と可変性 Golang 文字列変更の詳細な説明: 動的な調整と可変性 Apr 08, 2024 pm 03:27 PM

GoLang の文字列は不変ですが、文字列連結を使用した文字列の連結という手法を使用して動的に変更できます。文字列フォーマットを使用して新しい文字列を作成します。文字列の基礎となるバイト スライスを変更します。サードパーティのライブラリが提供する変更可能な文字列型を使用します。

PHP 文字列操作: 余分なカンマを削除し、カンマのみを保持する実装のヒント PHP 文字列操作: 余分なカンマを削除し、カンマのみを保持する実装のヒント Mar 28, 2024 pm 03:02 PM

PHP 文字列操作: 余分なカンマを削除し、カンマのみを保持する 実装のヒント PHP 開発では、文字列処理は非常に一般的な要件です。場合によっては、文字列を処理して余分なカンマを削除し、カンマのみを残す必要があります。この記事では、実装テクニックと具体的なコード例を紹介します。まず、一般的な要件を見てみましょう。複数のカンマを含む文字列があり、余分なカンマを削除して一意のカンマのみを保持する必要があるとします。たとえば、「apple,ba」を置き換えます。

See all articles