現在の位置: ホーム> 最新記事一覧> mb_http_inputでmb_get_infoを使用してhttpリクエストでエンコードを取得する方法

mb_http_inputでmb_get_infoを使用してhttpリクエストでエンコードを取得する方法

gitbox 2025-05-29

PHP開発では、マルチバイト文字列を扱う際に、特に多言語Webサイトを処理したり、異なるクライアントからのデータを処理する場合、 MBSTring拡張機能を使用して文字エンコードの正しさを確保します。リクエストで文字エンコードを正しく処理するために、 mb_http_input()およびmb_get_info()は非常に実用的なツールです。

この記事では、これら2つの機能を介してHTTP要求で文字エンコーディングを取得する方法を詳細に説明し、それらの使用と違いを説明します。

1。MB_HTTP_INPUT - HTTP入力の文字エンコードを取得します

MB_HTTP_INPUT()関数を使用して、HTTP入力の文字エンコードを検出できます。検出できる入力タイプは次のとおりです。

  • 「G」 :データを取得します

  • 「P」 :データを投稿します

  • 「C」 :Cookieデータ

  • 's' :string input(all)

  • 'i' ' :自動検出(優先度:post> get> cookie)

サンプルコード:

 <?php
// テスト POST データの文字エンコーディング
$post_encoding = mb_http_input('P');

if ($post_encoding) {
    echo "POST 要求された文字エンコードはです: {$post_encoding}\n";
} else {
    echo "未能テスト到 POST 要求されたエンコード\n";
}
?>

たとえば、フォームでデータを送信する場合:

 <form method="post" action="https://gitbox.net/submit.php">
  <input type="text" name="username">
  <input type="submit" value="提出する">
</form>

上記のPHPスクリプトは、提出された投稿データ(UTF-8やEUC-JPなど)で使用されるエンコードを検出できます。

2。MB_GET_INFO - MBSTRING構成情報を取得します

MB_GET_INFO()は、 MBSTringの現在の構成情報を返すことができる多機能診断機能です。通話中にパラメーターが渡されない場合、すべての情報が返されます。特定のプロジェクト名を渡して、 「http_input」などの特定の設定を照会することもできます。

サンプルコード:

 <?php
// すべてを取得します mbstring 情報
$mb_info = mb_get_info();
echo "現在 HTTP 入力コードはに設定されています: " . $mb_info['http_input'] . "\n";

// またはただ取得します http_input 一部
$http_input = mb_get_info("http_input");
echo "HTTP エンコード設定を入力します: {$http_input}\n";
?>

注: MB_GET_INFO( "HTTP_INPUT")は、実際の要求データではなく、MBSTringのデフォルトの入力エンコード設定( AutoUTF-8など)を返します。したがって、 MB_HTTP_INPUT()は、「実際のリクエストで使用されるエンコード」をチェックするための最初の選択肢です。

3。2つの関数の組み合わせ

サーバーがクライアントからデータを正しく受信して処理できるようにしたい場合は、以下は実用的なアプリケーション方法です。

 <?php
// デフォルトの文字エンコードを設定します
mb_internal_encoding("UTF-8");
mb_http_input("auto");

// 得る POST 要求された実際の文字エンコード
$actual_encoding = mb_http_input('P');

// 得る mbstring 現在 HTTP 設定を入力します
$configured_encoding = mb_get_info("http_input");

echo "実際の要求コードはです: {$actual_encoding}\n";
echo "mbstring 構成 HTTP 設定を入力します为: {$configured_encoding}\n";
?>

このコードは、開発者がCarled Charatureをトラブルシューティングするのに役立ちます。クライアントから送信されたエンコードがサーバーの構成と一致しないか、MBSTRing設定がデフォルトの動作をオーバーライドできないかどうか。

4。概要

  • mb_http_input()を使用して、リクエストで実際に使用される文字エンコードを取得します。

  • MB_GET_INFO()を使用して、デフォルトのHTTP入力エンコーディングを含むMBSTringの現在の構成を取得します。

  • 2つの組み合わせにより、コーディングの問題をより包括的な理解とデバッグを可能にし、アプリケーションがユーザーの入力を正しく処理できるようにします。

多言語Webサイトまたは国際フォームデータを処理するときに、 MBSTRINGが常に有効になり、正しく構成され、サーバーの動作が上記の方法を介してクライアントデータと一致するかどうかを定期的に確認することをお勧めします。

文字化けされた文字コードの問題をデバッグしたり、さまざまなロケールを含むアプリケーションを開発したりしていますか?