【PHP8.x】iconv_mime_decode_headers関数の使い方

作成日: 更新日:

iconv_mime_decode_headers関数は、MIMEエンコードされたヘッダー文字列をデコードし、プログラムで扱いやすい形式に変換する関数です。インターネット上でやり取りされるメールの件名や送信者名、あるいはHTTPヘッダーなどには、日本語のようなASCII文字セットに含まれない文字が使われることがあります。これらの文字を国際的な環境で正しく表示・伝達するためには、特殊な「MIMEエンコード」という形式が用いられます。この形式は通常、「=?文字コード?エンコーディング方式?エンコードされた文字列?=」のようなパターンをしています。

この関数は、そうしたMIMEエンコードされたヘッダー文字列(例: 複数のヘッダー行からなる文字列)を引数として受け取り、指定された文字コードに変換しながらデコード処理を実行します。デコードされた結果は、一般的に、ヘッダー名とそれに対応する値のペアを要素とする連想配列として返されます。これにより、開発者は複雑なエンコード形式を直接解析することなく、メールの件名やエンコードされたファイル名といった情報を簡単に取得し、文字化けすることなく正しく表示・処理できるようになります。

さらに、デコード処理の際に使用する文字コードや、エンコードエラーが発生した場合の挙動を詳細に設定するためのオプションを引数として指定することも可能です。これは、多様な文字コードやエンコード方式で送られてくるデータに柔軟に対応するために非常に有効です。PHP 8.4 で利用可能であり、主にメールシステムやWebアプリケーションにおいて、外部から受信したMIMEエンコード済みヘッダーを安全かつ正確に扱うための不可欠なツールとして利用されます。

基本的な使い方

構文(syntax)

<?php
$encodedHeaders = "Subject: =?UTF-8?B?44OR44Kk44Oe44Oq?= Test\r\nFrom: =?UTF-8?Q?Example_User?= <user@example.com>";
$decodedHeaders = iconv_mime_decode_headers($encodedHeaders);
?>

引数(parameters)

string $headers, int $mode = 0, ?string $encoding = null

  • string $headers: メールヘッダー文字列を指定します。
  • int $mode = 0: デコードモードを指定する整数。デフォルトは0です。
  • ?string $encoding = null: デコードに使用するエンコーディングを指定する文字列。指定しない場合は自動判別されます。

戻り値(return)

array|false

成功した場合、デコードされたヘッダーの連想配列を返します。失敗した場合は false を返します。

【PHP8.x】iconv_mime_decode_headers関数の使い方 | いっしー@Webエンジニア