iconv_mime_decode
(PHP 5, PHP 7, PHP 8)
iconv_mime_decode — MIME
ヘッダフィールドをデコードする
説明
MIME
ヘッダフィールドをデコードします。
パラメータ
string
-
エンコードされたヘッダを表す文字列。
mode
-
mode
は、iconv_mime_decode() が不正な形式のMIME
ヘッダフィールドに遭遇した場合の 振る舞いを定義します。以下のビットマスクの組み合わせで指定が可能です。iconv_mime_decode() で指定できるビットマスク 値 定数名 説明 1 ICONV_MIME_DECODE_STRICT 指定すると、ヘッダは » RFC2047 で定義されている標準に完全準拠する形式でデコードされます。 このオプションはデフォルトでは無効になっています。なぜなら、世の中には おかしなメールソフトが多く存在し、それらは規格に従わずに間違った MIME
ヘッダを生成するからです。2 ICONV_MIME_DECODE_CONTINUE_ON_ERROR 指定すると、iconv_mime_decode_headers() は文法的なエラーを無視し、デコード作業を継続します。 encoding
-
オプションの
encoding
パラメータは、結果の 文字セットを指定します。指定されなかった場合、もしくはnull
の場合は iconv.internal_encoding が用いられます。
戻り値
成功した場合はデコードされた MIME
フィールドを、
デコード中にエラーが発生した場合は false
を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 |
encoding は、nullable になりました。
|
例
例1 iconv_mime_decode() の例
<?php
// この結果は "Subject: Prüfung Prüfung" となります。
echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",
0, "ISO-8859-1");
?>
参考
- iconv_mime_decode_headers() - 複数の MIME ヘッダフィールドを一度にデコードする
- mb_decode_mimeheader() - MIME ヘッダフィールドの文字列をデコードする
- imap_mime_header_decode() - MIME ヘッダ要素をデコードする
- imap_base64() - BASE64 でエンコードされたテキストをデコードする
- imap_qprint() - quoted-printable 文字列を 8 ビット文字列に変換する
+add a note
User Contributed Notes 3 notes
Dirk Becker ¶
11 years ago
While creating a new webmailer, I had to coop with a lot of mails and only half of them were correct encoded!
Often the text is tagged as ISO but in real its UTF :/
After trying a lot of solutions and combination a found a way which seems to work for all our mails. Maybe its usefull to someone else too.
<?php
function mime_encode($data)
{
$resp = imap_utf8(trim($data));
if(preg_match("/=\?/", $resp))
$resp = iconv_mime_decode($data, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, "ISO-8859-15");
if(json_encode($resp) == 'null')
$resp = utf8_encode($resp);
return $resp;
}
?>
koronci at aol dot com ¶
12 years ago
A simple and working solution for latin encoding supports Slovak, Czech, Russian ect.
<?php iconv("utf-8", "windows-1250", $SomeWeirdText); ?>
specially for those who strugle with imap_mime_header_decode
dido dot sevilla at gmail dot com ¶
19 years ago
In PHP versions that have imap_mime_decode built in, it's possible to emulate the operation of this function:
<?php
function iconv_mime_decode($str, $mode=0, $charset="UTF-8")
{
$data = imap_mime_header_decode($str);
if (count($data) > 0) {
// because iconv doesn't like the 'default' for charset
$charset = ($data[0]->charset == 'default') ? 'ASCII' : $data[0]->charset;
return(iconv($charset, $charset, $data[0]->text));
}
return("");
}
?>
I've only tried to use this code snippet to decode ISO-2022-JP messages to UTF-8, but I see no reason why it shouldn't work in other cases.
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google