多言語の文字列、特に中国語、日本、韓国語などの多バイト文字を含む文字列を処理する場合、文字エンコードを正しく識別して処理することが特に重要になります。 PHPは、強力なマルチバイトストリング処理拡張機能( MBSTRing )を提供します。MB_Get_Infoは、現在のMBSTRingの構成情報と文字エンコーディングに関連する重要なパラメーターを表示するのに役立つ非常に実用的な機能です。
この記事では、 MB_GET_INFO関数を使用して文字列エンコード構成情報を取得し、実際の使用法を理解するのに役立つ簡単な例を提供する方法を紹介します。
MB_GET_INFOは、現在のマルチバイト文字列処理の内部設定情報を返すPHP MBSTring拡張機能の関数です。文字列の実際のエンコードを直接伝えることはできませんが(これにはMB_DETECT_ENCODINGなどの関数が必要です)、デフォルトのエンコード、内部エンコード、HTTP入力、出力エンコード、その他の情報など、現在の環境でMBSTRINGの動作を示すことができます。
mb_get_info(?string $type = null): array|string|false
$タイプ(オプション):取得する構成情報のタイプを示す文字列。オプションの値は次のとおりです。
'All' :すべての設定を返します(デフォルト)
'internal_encoding' :内部エンコード設定に戻ります
'http_input' :HTTP入力エンコード設定を返します
'http_output' :HTTP出力エンコード設定を返します
'encoding_translation' :エンコード変換が有効かどうかを返します
「言語」 :現在の言語設定に戻ります
「Detect_order」 :現在の検出順序を返します
MB_GET_INFOを使用してエンコード情報を表示する簡単な例を次に示します。
<?php
// デフォルトの内部エンコードをに設定します UTF-8
mb_internal_encoding("UTF-8");
// すべてを取得します mbstring 構成情報
$info = mb_get_info();
echo "<pre>";
print_r($info);
echo "</pre>";
// 内部エンコーディング情報を取得したい場合:
$encoding = mb_get_info("internal_encoding");
echo "現在の内部コードはです:$encoding";
?>
上記のコードを実行した後、次の情報が出力される場合があります(一部のフィールドが表示されます)。
Array
(
[internal_encoding] => UTF-8
[http_input] => pass
[http_output] => pass
[encoding_translation] => Off
[language] => neutral
[detect_order] => Array
(
[0] => ASCII
[1] => UTF-8
)
)
現在の内部コードはです:UTF-8
多言語コンテンツ管理システム(CMS)を開発していると仮定し、ユーザーはコンテンツを送信するときに異なるエンコード形式を使用する場合があります。 MB_GET_INFOを使用して、現在の内部エンコーディング設定がシステムの構成と一致して、異常な文字表示または文字化けコードの問題を避けるかどうかを確認できます。
例えば:
<?php
// 現在の内部コードがあるかどうかを確認します UTF-8
if (mb_get_info("internal_encoding") !== "UTF-8") {
mb_internal_encoding("UTF-8");
}
?>
このチェックは、プロジェクトの初期化コードに配置して、アプリケーション全体が常に統一されたコーディング環境で実行されていることを確認できます。
MB_GET_INFO自体は文字列エンコーディングを検出しませんが、 MBSTRINGの動作を理解し、習得するための重要なツールです。 PHP Multibyte String Processingの設定を確認し、アプリケーションでキャラクターエンコードが正しく使用されることを保証します。
文字列の実際のエンコードをさらに検出する必要がある場合は、 mb_detect_encodingを使用してmb_get_infoを使用して環境構成を理解できます。 2つの組み合わせが最適です。
その他のコンテンツについては、ご覧ください。
https://gitbox.net/docs/php/mbstring (サンプルリンク)