PHPのmb_encode_mimeheader()関数でMIMEヘッダー用文字列をエンコードする方法
PHPでは、mb_encode_mimeheader()関数を使用することで、MIME(Multipurpose Internet Mail Extensions)ヘッダー用に文字列をエンコードできます。この関数は、指定された文字列をMIMEヘッダーエンコード方式に従って変換し、メールヘッダー内で安全に扱えるASCII形式の文字列を生成します。
構文
string mb_encode_mimeheader(str $string, str $charset, str $transfer_encoding, str $newLine, int $indent)
パラメータ
mb_encode_mimeheader()関数は、以下の5つのパラメータを受け取ります。
$string − エンコード対象の文字列を指定します。この文字列のエンコーディングは、mb_internal_encoding()で設定された内部エンコーディングと一致している必要があります。
$charset − 文字列が表現される文字セット名を指定します。
$transfer_encoding − MIMEエンコードの方式を指定します。base64(B)またはQuoted-Printable(Q)のいずれかを選択できます。省略した場合は、デフォルトでbase64(B)が適用されます。
$newLine − mb_encode_mimeheader()が行折り返し(line-folding)を行う際に使用する行末(EOL)マーカーを指定します。
$indent − 先頭行のインデント幅を指定します。
戻り値
この関数は、ASCII表現に変換された文字列を返します。
例1
<?php $name = "Online tutorials"; $mbox = "nru"; $doma = "gtin.thu"; $addr = mb_encode_mimeheader($name,"UTF-7","Q")." <".$mbox."@".$doma.">"; echo $addr; ?>
出力結果
Online tutorials
この例では、mb_encode_mimeheader()を使って送信者名をエンコードし、メールアドレス形式の文字列を組み立てています。
例2
<?php $string = "\xe2\x86\x92"; mb_internal_encoding( "UTF-8"); echo mb_encode_mimeheader($string, 'UTF-8'); ?>
出力結果
=?UTF-8?B?4oaS?=
この例では、内部エンコーディングをUTF-8に設定した上で、特殊文字を含む文字列をエンコードしています。結果として、「=?UTF-8?B?4oaS?=」のようなMIMEエンコードワード形式の文字列が出力されます。これは、マルチバイト文字をメールヘッダーに安全に埋め込むための標準的な形式です。
-
PHPで配列のキーをリセットする方法【array_values()関数の使い方】
PHPでは、array_values()関数を使うことで、配列のキーを簡単にリセット(振り直し)できます。この関数は、元の配列からすべての値を取り出し、0から始まる連番の新しいキーを割り当てた配列を返します。 array_values()関数とは array_values()は、文字列キーを持つ連想配列や、飛び飛びの数値キーを持つ配列など、任意のキー構成の配列を受け取り、値だけを抽出してインデックス(0, 1, 2, ...)を振り直した新しい配列を返す組み込み関数です。元の配列そのものは変更されず、結果は新しい配列として返される点に注意してください。 例1:文字列キーの配列をリセットする ま
-
PHPでランダム文字列を生成する方法【初心者向けサンプルコード付き】
PHPでランダムな文字列を生成するには、いくつかの方法があります。本記事では、md5() 関数と mt_rand() 関数を組み合わせたシンプルな手法と、PHP 7以降で利用できる暗号学的に安全な random_bytes() 関数を使った方法を、サンプルコードと実行結果とともに解説します。 例1:md5() と mt_rand() を組み合わせる方法 mt_rand() で生成した乱数を md5() でハッシュ化し、substr() で先頭5文字を切り出すことで、ランダムな文字列を作成します。 <?php $res = substr(md5(mt_rand()