mb_http_input

関数の概要

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の受け取り時に、適切な文字コード処理を行うためにぜひ活用しましょう。引数で入力タイプを指定することで細かな管理も可能で、エンコーディングの判定ミスを防ぐことに役立ちます。実務でのマルチバイト文字列対応に必須の関数のひとつです。