Multibyte Stringsを扱うとき、 MbString拡張はPHPを強力にサポートします。その中で、 MB_GET_INFO()は、 MBSTRingの内部設定状態を取得するための非常に実用的な機能です。ただし、多くの開発者は、返品結果を解釈するのが困難であるか、返品が空であるなど、使用中にある程度の混乱に遭遇します。この記事では、 MB_GET_INFO()をデバッグする方法を体系的に理解し、一般的な問題の詳細なソリューションを提供します。
MB_GET_INFO()は、PHP MBSTRING拡張機能の関数であり、現在のマルチバイト文字列環境の設定情報を取得します。 3つの用途があります:
// すべての設定情報を取得します
$info = mb_get_info();
// 指定されたアイテムを取得します
$encoding = mb_get_info("internal_encoding");
// 現在のエンコード設定を取得します
$current_encoding = mb_get_info("encoding");
返されたデータは通常、連想配列であり、コンテンツは次のとおりです。
Array
(
[internal_encoding] => UTF-8
[http_input] => pass
[http_output] => pass
[input_encoding] => UTF-8
[output_encoding] => UTF-8
[language] => neutral
[encoding_translation] => Off
)
次のコマンドを実行して、PHPにMBSTRingがロードされているかどうかを確認します。
if (function_exists('mb_get_info')) {
echo "mbstring 有効になっています";
} else {
echo "mbstring 有効になっていません";
}
MbStringが有効になっていない場合は、 php.iniで拡張機能を有効にする必要があります。
extension=mbstring
次に、PHPサービスを再起動します。
エンコードを設定する前後に変更を確認する必要がある場合があります。
echo "初期情報:\n";
print_r(mb_get_info());
mb_internal_encoding("ISO-8859-1");
mb_http_output("UTF-8");
echo "変更された情報:\n";
print_r(mb_get_info());
この比較プロセスは、設定が実際に有効であるかどうかを位置付けるのに役立ちます。
実際のアプリケーションでは、後続の分析のためにログに戻り値を記録できます。
file_put_contents("/var/log/mbstring_debug.log", print_r(mb_get_info(), true));
考えられる理由:
MBSTRING拡張機能は有効になっていません
PHPをコンパイルするとき、-Enable-Mbstringパラメーターは追加されませんでした
解決:
php.iniを確認するか、 phpinfo()を実行して、mbstringモジュールが含まれているかどうかを確認します
次のコマンドを使用してPHPを再コンパイルします(ソースコードのインストール用):
./configure --enable-mbstring
make && make install
Encoding_Translationは、入力/出力エンコード変換が有効かどうかを示します。デフォルトは状態外です。MB_OUTPUT_HANDLER ()を使用すると、自動的に有効になります。
冒頭の方法は次のとおりです。
output_handler = mb_output_handler
またはコードで有効にします:
ob_start("mb_output_handler");
MB_GET_INFO()によって返される値がエンコードを設定した後に変更されていないことがわかった場合、設定の範囲が正しくない可能性があります。
mb_internal_encoding("UTF-8"); // 正しい:内部エンコーディングを設定します
ini_set("default_charset", "UTF-8"); // 出力のみに影響します
2つの機能は異なり、使用すると区別する必要があります。
多言語文字を処理するWebサイトなどの実際のプロジェクトでは、以下のコードを初期化構成ファイルに追加できます。
mb_internal_encoding("UTF-8");
mb_http_input("UTF-8");
mb_http_output("UTF-8");
mb_language("uni");
if (isset($_GET['debug_mb'])) {
echo "<pre>";
print_r(mb_get_info());
echo "</pre>";
}
このようにして、 https://gitbox.net/index.php? debug_mb=1にアクセスすると、現在のMBSTring構成情報を簡単に入手できるように簡単に入手できます。
MB_GET_INFO()は、PHPマルチバイトストリング環境を理解してデバッグするための不可欠なツールです。この記事の説明を通して、私はあなたがすでに使用方法を習得し、一般的な問題をすばやく見つけて解決できると信じています。国際化やキャラクターエンコード変換などのデリケートなシナリオに対処する上で、最も信頼できるアシスタントになります。
PHPコーディングスキルの詳細については、公式ドキュメントにアクセスするか、開発者コミュニティに参加してください: https://gitbox.net/docs/mbstringを使用してください。