PHPマスター|マルチバイト文字列を使用します
数字の言語は、英語、日本語、その他の言語であろうと、多くの文字で構成されています。したがって、数値言語を扱う場合、基本的な質問は、各文字を数値的に表現する方法です。過去には、英語のキャラクターしか表していませんでしたが、今では物事が非常に異なっており、結果は複数の異なる言語でキャラクターを表すための見事なキャラクターエンコードスキームです。 PHPはこれらの異なるスキームをどのように関連付け、処理しますか?
キーポイント
- マルチバイト文字は、1〜4バイトを使用して文字を定義します。これは、256を超える一意の文字を持つ言語の数値表現に重要です。 Unicode、特にUTF-8は、これらの文字で最も一般的に使用されるエンコードスキームです。
- PHP自体は、マルチバイト文字を処理するようには設計されていません。これらの文字を処理するには、特別な関数セットであるMBSTRING関数を使用する必要があります。ただし、PHPのHTTPヘッダーには、ページのメタタグをオーバーライドできる文字セット識別子も含まれています。
- マルチバイトサポートはPHPのデフォルト機能ではなく、再構成が必要です。 MB関数を有効にするには、-Enable-Mbstringコンパイル時間オプションを使用して、ランタイム構成オプションMBSTRING-ENCODING_TRANSLATIONを設定します。
- MB_CHECK_ENCODING、MB_STRLEN、MB_EREG_SEARCHなど、PHPでいくつかのマルチバイト文字列コマンドを使用できます。これらは、特定のエンコードシーケンスが有効かどうかを確認するために使用され、マルチバイト文字列の文字の数を見つけ、従来の文字検索を実行します。マルチバイトバージョン。
基本
「ビット」は0または1であり、「バイト」は8つの連続したビットの組み合わせであることを知っています。バイトには8つの二重値ビットがあるため、合計256の異なるモード(2の8番目の電力)でバイトを構成できます。可能な8ビットモードごとに異なる文字を関連付けることができます。これらのバイトをさまざまな注文にまとめると、独自のコミュニケーション方法があります。それは必ずしも賢いわけではなく、誰が両端にいるかに依存しますが、コミュニケーションです。 256以下のユニークなキャラクターを持つ言語でキャラクターを表現できる限り、私たちは成功します。しかし、たった256文字で言語を表現できない場合はどうなりますか?または、同じドキュメントで複数の言語を表現する必要がある場合はどうなりますか?今日、私たちが見つけることができるすべてをデジタル化するにつれて、256文字は十分ではありません。幸いなことに、この課題をよりよく満たすキャラクタースキームが設計されています。これらの新しいSuperCharacterセットは、1〜4バイトを使用して文字を定義します。今日、キャラクターエンコーディングの分野の大物はUnicodeです。これは、複数のバイトを使用して文字を表すソリューションです。 Unicode Consortiumによって開発され、UTF-32(Dreadnaught Class Starship用)、UTF-16(Star Trekのエンタープライズ:Dark Unboundのため)、UTF-8(私たちのほとんどの人が実際に使用する必要があります。 Webアプリケーションの世界)。私が言ったように、Unicode(UTF-8を含む)は複数のバイト構成を使用して文字を表します。 UTF-8は、1〜4バイトを使用して1,112,064パターンを生成して、異なる文字を表します。これらの「ワイドキャラクター」はより多くのスペースを占有しますが、UTF-8は他のエンコードスキームよりも速く処理する傾向があります。なぜ誰もがUTF-8を賞賛するのですか?その一部は、ESPNとTCMで見られるUTF-8対応広告で強調されている人気モデルですが、主にUTF-8はASCIIを模倣しています。
これはPHPにどのような影響を与えますか?
私はあなたが何を考えているか知っています。メタタグでキャラクターセットを「UTF-8」に設定するだけで、すべてが問題ありません。しかし、これは真実ではありません。まず、単純な事実は、PHPがマルチバイト文字を処理するように実際には設計されていないため、標準の文字列関数を使用してこれらの文字を動作させると不確実な結果が生じる可能性があります。これらのマルチバイト文字を処理する必要がある場合、特別な関数セットであるMbString関数を使用する必要があります。第二に、たとえあなたがPHPを制御していても、まだ問題があるかもしれません。通信をオーバーライドするHTTPヘッダーには、ページメタタグのコンテンツをオーバーライドする文字セットIDも含まれています。それでは、PHPはマルチバイト文字をどのように処理しますか?マルチバイト文字列に影響を与える機能の2つのセットがあります。最初のものはiconvです。バージョン5.0から始めて、これは言語のデフォルトの部分になりました。これは、ある文字セットを別の文字セット表現に変換する方法です。これは、この記事で説明するものではありません。 2つ目は、「MB_」が付いた一連のコマンドであるマルチバイトサポートです。これらのコマンドの多くがあり、クイックレビューでは、それらのいくつかは特定のエンコードスキームに基づいてキャラクターが適切であるかどうかを判断することに関連していることが示されていますが、他のものはPHP正規表現の一部と同様の検索指向関数ですが、マルチバイト関数です。
php
のマルチバイトサポートを有効にしますマルチバイトサポートは、PHPのデフォルト機能ではありませんが、追加のライブラリまたは拡張機能をダウンロードする必要もありません。残念ながら、PHPのマネージドバージョンを使用している場合、これはできることではないかもしれません。 phpinfo()関数を使用して、構成を表示します。下にスクロールして出力を途中でスクロールすると、「mbstring」というセクションがあります。これにより、基本機能が有効になっているかどうかがわかります。この機能を有効にする方法については、マニュアルを参照できます。要するに、-enable-mbstringコンパイル時間オプションを使用して、ランタイム構成オプションmbsstring-encoding_translationを設定することにより、MB関数を有効にすることができます。もちろん、最終的な解決策はPHP 6です。IBM(帽子を脱いでください)ICUライブラリを使用して、マルチバイト文字セットのネイティブサポートを確保するためです。私たちがしなければならないのは座って待つことだけですよね?しかし、それまでは、今すぐ利用できるマルチバイトサポートをご覧ください。
マルチバイト文字列コマンド
53の異なるマルチバイト文字列コマンドがある場合があります。 54があるかもしれません。私はある時点で少し邪魔にならなかったが、あなたは私が言っていることを手に入れた。言うまでもなく、私たちはそれを1つずつ説明することはありませんが、楽しみのために、いくつかを簡単に見てみましょう。
- mb_check_encoding
mb_check_encoding()関数は、特定のエンコードシーケンスがエンコードスキームに有効かどうかを判断するためにチェックします。この関数は、文字列のエンコード(またはどのスキームが機能するか)をどのようにエンコードするかはわかりませんが、指定されたスキームで機能するかどうかがわかります。
<?php $string = 'u4F60u597Du4E16u754C'; $string = json_decode('"' . $string . '"'); $valid = mb_check_encoding($string, 'UTF-8'); echo ($valid) ? 'valid' : 'invalid'; ?>
PHPマニュアルにサポートされているエンコーディングのリストを見つけることができます。
- mb_strlen
strlen()関数は、文字列内のバイト数を返します。単一のバイトであるASCIIの場合、これは文字の数を見つけることをお勧めします。マルチバイト文字列の場合、MB_STRLEN()関数を使用する必要があります。
<?php $string = 'u4F60u597Du4E16u754C'; $string = json_decode('"' . $string . '"'); $valid = mb_check_encoding($string, 'UTF-8'); echo ($valid) ? 'valid' : 'invalid'; ?>
- mb_ereg_search
mb_ereg_search()関数は、従来の文字検索のマルチバイトバージョンを実行します。ただし、いくつかの注意事項があります - MB_REGEX_ENCODING()関数を使用してエンコードスキームを指定する必要があります。正規表現にはセパレーターがありません(単なるパターンパーツ)。
<?php $string = 'u4F60u597Du4E16u754C'; $string = json_decode('"' . $string . '"'); echo strlen($string); // 输出 12 – 错误! echo mb_strlen($string, 'UTF-8'); // 输出 4 ?>
それで十分ですか?
私はあなたがどのようになっているのかわかりませんが、世界は本当にもっと簡単なものを必要としていると思います。残念ながら、マルチバイト処理はこの要件を満たしていません。しかし今のところ、これはあなたが無視できないものです。通常のPHP文字列処理を実行できない場合があります(通常のASCII範囲を超える文字(U 0000 - U 00FF)を処理しようとしているためです。これは、MB_指向の関数を使用する必要があることを意味します。もっと知りたいですか?真剣に、あなたはしたいですか?これはあなたを怖がらせると本当に思っていました。私はこれに対して準備ができていませんでした。私の時が来ました。あなたの最良の選択は何ですか? PHPマニュアルをご覧ください。ああ、何かを試してみてください。実際に何かを使用している経験を置き換えるものは何もありません。
(元のFAQパーツは、その内容が記事のトピックに非常に関連しており、書き換え後に読みやすさを減らすため、ここで保持する必要があります。)
以上がPHPマスター|マルチバイト文字列を使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。
