mb_encode_mimeheader

MIMEヘッダの文字列をエンコードする

説明

string mb_encode_mimeheader(
    string $string,
    stringnull $charset = null,
    stringnull $transfer_encoding = null,
    string $newline = "\r\n",
    int $indent = 0
)

MIME ヘッダエンコーディング方式によって文字列 string をエンコードします。

パラメータ

string

エンコードする文字列。 mb_internal_encoding と同じエンコーディングにしなければいけません。

charset

charset は、string の変換後の文字セット名です。デフォルトは、現在の NLS 設定 (mbstring.language) によって決まります。

transfer_encoding

transfer_encoding は MIME エンコーディングの 方式を指定します。"B" (Base64) または "Q" (Quoted-Printable) のどちらかでなければなりません。 デフォルトは "B" です。

newline

newline は EOL (行末) のマーカで、 mb_encode_mimeheader が行を折りたたむ (» RFC 用語で、 ある一定より長い行を複数行に分割することを言います。 分割する長さは、現在 74 文字に固定されています) 際に利用します。 デフォルトは "\r\n" (CRLF) です。

indent

最初の行の字下げ (ヘッダで string の前におく文字数)。

戻り値

文字列を ASCII 表現に変換したものを返します。

変更履歴

バージョン 説明
8.3.0 NUL (0) バイトは、 Quoted-Printable エンコーディングを用いた場合でも削除されなくなりました。 代わりに、=00 でエンコードされます。
8.0.0 charsettransfer_encoding は、 nullable になりました。

例1 mb_encode_mimeheader の例

<?php
$name = "太郎"; // 漢字
$mbox = "kru";
$doma = "gtinn.mon";
$addr = '"' . addcslashes(mb_encode_mimeheader($name, "UTF-7", "Q"), '"') . '" <' . $mbox . "@" . $doma . ">";
echo $addr;
?>

上の例の出力は以下となります。

"=?UTF-7?Q?+WSqQzg-?=" <kru@gtinn.mon>

注意

注意:

この関数は、行を分割する際に特別な配慮(単語の区切りなど)を行いません。 このせいで、もとの文字列に予期せぬ空白が入ってしまう可能性があります。

参考

  • mb_decode_mimeheader