関数の概要
mb_http_input は、PHPのマルチバイト文字列モジュール(mbstring)に含まれる関数で、現在の HTTP 入力文字エンコーディングを取得するために使われます。HTTPリクエストで送信されたデータの文字コードを確認し、適切に処理する際に役立ちます。この関数を利用することで、フォームやクエリパラメータの文字コード判定が容易になります。
パラメータの説明
$type(省略可能): 文字エンコーディングを取得したい入力のタイプを文字列で指定します。指定できる値は'G' (GET), 'P' (POST), 'C' (COOKIE), 'S' (STRING(環境変数))です。何も指定しなければ、全ての種類から推定されたエンコーディングを返します。
戻り値
指定した入力タイプに対して検出された文字エンコーディングの名前(例: “UTF-8”, “SJIS”)を文字列で返します。エンコーディングが特定できない場合は FALSE を返します。
使用例
基本的な使い方
<?php
// HTTPリクエスト全体の入力エンコーディングを取得
$encoding = mb_http_input();
echo "HTTP入力の文字エンコーディングは: " . $encoding;
?>
特にパラメータを指定しない場合、GETやPOST、COOKIEの入力を総合的に判断してエンコーディングを返します。
GETパラメータのエンコーディングを取得
<?php
// GETパラメータの文字コードを取得
$get_encoding = mb_http_input('G');
echo "GET入力の文字エンコーディングは: " . $get_encoding;
?>
「G」を指定することで、GETパラメータの文字エンコーディングだけを調べることができます。
POSTとCOOKIEの文字エンコーディングを別々に取得
<?php
$post_encoding = mb_http_input('P');
$cookie_encoding = mb_http_input('C');
echo "POST入力の文字エンコーディング: " . $post_encoding . "<br>";
echo "COOKIE入力の文字エンコーディング: " . $cookie_encoding;
?>
POSTデータとCOOKIEの文字エンコーディングを個別にチェックして、データ処理の前準備に役立てます。
関連する関数
mb_http_output– HTTP出力時の文字エンコーディングを設定・取得するmb_internal_encoding– 現在の内部文字エンコーディングを設定・取得するmb_convert_encoding– 文字列のエンコーディングを変換するmb_detect_encoding– 文字列の文字コードを検出する
まとめ
mb_http_input は、HTTPリクエストで送られてきたGETやPOST、COOKIEデータの文字エンコーディングを簡単に取得できる便利な関数です。フォームからの入力やAPIの受け取り時に、適切な文字コード処理を行うためにぜひ活用しましょう。引数で入力タイプを指定することで細かな管理も可能で、エンコーディングの判定ミスを防ぐことに役立ちます。実務でのマルチバイト文字列対応に必須の関数のひとつです。
