ホームページ  >  記事  >  バックエンド開発  >  phpの文字列は何で構成されていますか?

phpの文字列は何で構成されていますか?

藏色散人
藏色散人オリジナル
2023-02-07 09:48:343221ブラウズ

php 文字列は一連の文字で構成され、各文字は 1 バイトに相当します。つまり、PHP は 256 文字セットしかサポートできないため、Unicode はサポートされません。PHP では、文字列の実装はバイトとバッファ長を指定する整数の配列。

phpの文字列は何で構成されていますか?

このチュートリアルの動作環境: Windows 10 システム、PHP バージョン 8.1、DELL G3 コンピューター

php 文字列とは何ですかからなる?

文字列 string は一連の文字で構成され、各文字は 1 バイトに相当します。これは、PHP が 256 の文字セットのみをサポートできるため、Unicode をサポートしないことを意味します。

文字列型の詳細な説明

PHP における文字列の実装は、バイトの配列にバッファ長を示す整数を加えたものです。バイトを文字に変換する方法に関する情報はなく、プログラマが決定する必要があります。文字列がどのような値で構成されるかについて制限はありません。特に、値が 0 のバイト (「NUL バイト」) は文字列内のどこにでも存在できます (ただし、このマニュアルでは非バイナリと呼ばれる関数がいくつかあります)。 「安全」、NUL バイト以降のすべてのデータを無視する可能性があります)。

文字列型のこの機能は、PHP に個別の「バイト」型が存在せず、代わりに文字列が使用されている理由を説明しています。ネットワークソケットから読み取られた任意のデータなど、非テキスト値を返す関数は引き続き文字列を返します。

PHP では文字列のエンコードが指定されていないため、文字列はどのようにエンコードされるのでしょうか?たとえば、文字列「á」は、「\xE1」(ISO-8859-1)、「\xC3\xA1」(UTF-8、C 形式)、「\x61\xCC\x81」(UTF-8)と等しくなります。 、D形式)または他の可能な表現はありますか?答えは、文字列がスクリプト ファイルと同じエンコードでエンコードされるということです。したがって、スクリプトが ISO-8859-1 としてエンコードされている場合、スクリプト内の文字列も ISO-8859-1 としてエンコードされます。ただし、これは、Zend Multibyte がアクティブ化されている場合には適用されません。この場合、スクリプトは任意の方法 (明示的に指定するか、自動的に検出されるか) でエンコードされてから、何らかの内部エンコードに変換され、文字列はこの方法でエンコードされます。スクリプトのエンコーディング (または Zend Multibyte がアクティブな場合はその内部エンコーディング) にはいくつかの制約があることに注意してください。これは、このエンコーディングが UTF-8 や ISO-8859-1 などの ASCII の互換性のあるスーパーセットである必要があることを意味します。ただし、最初の文字と最初以外の文字の両方に同じバイト値を使用できる状態依存エンコーディングでは、状態を切り替えるときに問題が発生する可能性があることに注意してください。

もちろん、テキストを操作する関数が有用であるためには、文字列がどのようにエンコードされるかを仮定する必要があります。残念ながら、このための PHP 関数には多くのバリエーションがあります。

  • 一部の関数は、文字列が単一バイトでエンコードされていることを前提としていますが、バイトが特定の文字として解釈される必要はありません。たとえば、substr()、strpos()、strlen()、strcmp() などです。これらの関数についてのもう 1 つの考え方は、これらの関数がメモリ バッファ上で動作する、つまりバイトおよびバイト添え字上で動作するということです。

  • 一部の関数には文字列のエンコーディング メソッドが渡され、この情報がデフォルトでは利用できないと想定される場合もあります。例には、htmlentities() および mbstring 拡張機能のほとんどの関数が含まれます。

  • 他の関数は現在のロケールを使用しますが (setlocale() を参照)、バイトごとに動作します。

  • 最後に、一部の関数は、文字列が特定のエンコーディング (通常は UTF-8) であると想定します。これは、intl 拡張機能および PCRE (上の例では u 修飾子が使用されている場合のみ) 拡張機能のほとんどの関数に当てはまります。

最後に、Unicode を正しく使用するプログラムを作成するには、データを破損する可能性のある関数を注意深く回避する必要があります。 intl および mbstring 拡張機能の関数を使用するには。ただし、Unicode エンコードを処理できる関数の使用は始まりにすぎません。どの言語が提供する機能であっても、最も基本的なことは Unicode 仕様を理解することです。たとえば、大文字と小文字のみを前提とするプログラムは完全に間違っています。

推奨学習: 「PHP ビデオ チュートリアル

以上がphpの文字列は何で構成されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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