PHPのiconv_mime_encode()関数でMIMEヘッダーフィールドを作成する方法
PHPには、iconv_mime_encode()という組み込み関数があり、MIMEヘッダーフィールドを構成するために使用されます。この記事では、その基本的な使い方と各パラメーターの詳細について解説します。
構文
string iconv_mime_encode(string $field_name, string $field_value, array $options=[])
iconv_mime_encode()関数は、有効なMIMEヘッダーフィールドを表す文字列を構成して返します。返される文字列は以下のような形式になります。
Subject: =ISO-8859-1?Q?Pr=FCfung_f=FFCr?= Entwerfen von einer MIME kopfzeile
補足: 上記の例では、「Subject」がフィールド名に相当し、「=ISO-8859-1?...」で始まる部分がフィールド値に相当します。
パラメーター
iconv_mime_encode()関数は、以下の3つのパラメーターを受け取ります。
- $field_name:ヘッダーのフィールド名を指定します。
- $field_value:ヘッダーのフィールド値を指定します。
- $options:省略可能なパラメーターです。設定項目を含む連想配列を指定することで、iconv_mime_encode()の動作を制御できます。
設定項目の一覧
以下は、iconv_mime_encode()でサポートされている設定項目($options)の一覧です。
| 項目名 | 型 | 説明 | デフォルト値 | 例 |
|---|---|---|---|---|
| scheme | string | フィールド値のエンコード方式を指定します。「B」(base64)または「Q」(quoted-printable)のいずれかを選択できます。 | なし | なし |
| input-charset | string | 第1パラメーターのfield_nameおよび第2パラメーターのfield_valueの文字セットを指定します。この項目が指定されていない場合、iconv.internal_charsetのini設定値が使用されます。 | iconv.internal_charset | ISO-8859-1 |
| output-charset | string | MIMEヘッダーを作成する際に使用する文字セットを指定します。指定しない場合はinput-charsetの値が使用されます。 | input-charsetの値 | UTF-8 |
| line-length | integer | ヘッダー行の最大長を指定します。 | 76 | 996 |
| line-break-chars | string | 長いヘッダーフィールドを折り返す際に、各行の末尾に追加されるEOL(行末)文字列を指定します。指定しない場合は「\r\n」(CR LF)が使用されます。 | \r\n | \n |
例1:「Q」(quoted-printable)エンコード方式を使用した場合
<?php
// iconv_mime_encode()でサポートされている設定項目を使用
$options = array(
"input-charset" => "ISO-8859-2",
"output-charset" => "UTF-8",
"line-length" => 76,
"line-break-chars" => "\\n"
);
// Q(quoted-printable)エンコード方式を使用
$options["scheme"] = "Q";
// 実行結果は次のように表示されます
// "Subject: =?UTF-8?Q?Pr=C3=BCfung=20Pr=C3=BCfung?="
echo iconv_mime_encode("Subject", "Prüfung Prüfung", $options);
?>出力結果
Subject: =?UTF-8?Q?Pr=C3=83=C2=BCfung=20Pr=C3=83=C2=BCfung?=
例2:「B」(base64)エンコード方式を使用した場合
<?php
// iconv_mime_encode()でサポートされている設定項目を使用
$options = array(
"input-charset" => "ISO-8859-1",
"output-charset" => "UTF-8",
"line-length" => 76,
"line-break-chars" => "\\n"
);
// B(base64)エンコード方式を使用
$options["scheme"] = "B";
// 実行結果は次のように表示されます
// "Subject: =?UTF-8?B?UHJlw4PCp29zIE9sw4PCoC50eHQ=?="
echo iconv_mime_encode("Subject", "Preços Olà.txt", $options);
?>出力結果
Subject: =?UTF-8?B?UHJlw4PCp29zIE9sw4PCoC50eHQ=?=
このように、iconv_mime_encode()関数を使えば、日本語などのマルチバイト文字を含むメールヘッダーも、RFCに準拠した形式で正しくエンコードすることができます。schemeやinput-charset、output-charsetなどの設定項目を適切に組み合わせることで、さまざまな文字コード環境に対応したMIMEヘッダーを柔軟に生成できるのが特徴です。
-
PHPのimageellipse()関数で楕円を描画する方法を徹底解説
imageellipse()は、PHPに標準で組み込まれているGDライブラリの関数の一つで、画像上に楕円を描画するために使用されます。処理が成功した場合はtrueを返し、失敗した場合はfalseを返します。 構文 bool imageellipse($image, $cx, $cy, $width, $height, $color) パラメータ imageellipse()は、以下の6つのパラメータを受け取ります:$image、$cx、$cy、$width、$height、$color。 $image − 描画対象となる画像リソースを指定します。imagecreatetruecolor()な
-
PHPのimagecropauto()関数で画像を自動的に切り抜く方法を徹底解説
imagecropauto()は、PHPに標準で組み込まれている関数の一つで、用意された複数のモードの中から選択して、画像を自動的に切り抜き(クロップ)することができます。構文resource imagecropauto(resource $image, int $mode, float $threshold, int $color)パラメータimagecropauto()は、$image、$mode、$threshold、$color の4つのパラメータを受け取ります。$image − 切り抜き対象となる画像リソースを指定します。$mode − 省略可能なパラメータで、切り抜きモードに対応す