imap_utf8

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_utf8将 MIME 编码的文本转换为 UTF-8

说明

imap_utf8(string $mime_encoded_text): string

如果声明的字符集为 libc-client 所知,则将给定的 mime_encoded_text 转换为 UTF-8。否则,将对给定的文本进行解码,但不转换为 UTF-8。

参数

mime_encoded_text

MIME 编码字符串。MIME 编码方法和 UTF-8 规范分别在 » RFC2047» RFC2044 中描述。

返回值

返回解码后的字符串,如果可能,则转换为 UTF-8。

范例

范例 #1 基本的 imap_utf8() 用法

<?php
echo imap_utf8("Johannes =?ISO-8859-1?Q?Schl=FCter?=");
?>

上面的示例将输出类似于以下内容

Johannes Schlüter

参见

添加注释

用户贡献的注释 8 个注释

7
esvit at mail dot ru
13 年前
这修复了全大写问题

<?php
function imap_utf8_fix($string) {
return
iconv_mime_decode($string,0,"UTF-8");
}
?>
6
kloewer at gmail dot com
12 年前
使用 iconv_mime_decode();

<?php
// 这将产生 "主题: Prüfung Prüfung"
echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",
0, "ISO-8859-1");
?>

https://php.net/manual/de/function.iconv-mime-decode.php
2
marcelo at maccoy dot com dot br
19 年前
# 此脚本使用正确的符号删除表达式是正确的
# 请忽略后面部分。
function decode_utf8($str){
# 模式
$err="(=\?.{10,13}q\?_?|\?\=)";
$pat = "/=([0-9A-F]{2})/";
$cha="'.chr(hexdec(";
# 擦除字符串中的空符号
$str=eregi_replace($err,"",$str);
# 使用 eval 解码并替换
eval("\$str='".
preg_replace($pat,$cha."'$1')).'",$str)
."';");
# 返回
return $str;
}
# 注意:你可以将此脚本缩减为 3 行。
0
number0 at tlen dot pl
15 年前
字符串大写错误 http://bugs.php.net/bug.php?id=44098
我的解码字符串函数

<?php
function decodeMimeStr($string, $charset="UTF-8" )
{
$newString = '';
$elements=imap_mime_header_decode($string);
for(
$i=0;$i<count($elements);$i++)
{
if (
$elements[$i]->charset == 'default')
$elements[$i]->charset = 'iso-8859-1';
$newString .= iconv($elements[$i]->charset, $charset, $elements[$i]->text);
}
return
$newString;
}
?>
0
Anonymous webmaster@luzon14DoTCom
17 年前
你也可以试试这个示例

$_subject = "=?iso-8859-1?b?THV6b26uMTQ=?= dot CoM";
echo utf8_decode(imap_utf8($_subject));

输出:Luzon®14 dot CoM

致意,
Tuso/Nazareth
0
hans at lintoo dot dk
18 年前
也可以看看
<?php
imap_mime_header_decode
($sting);
?>
不要试图用这个来解码主题... imap_mime_header_decode 在这方面做得更好。
-2
MetaYii
15 年前
请注意:imap_utf8 倾向于以大写形式返回字符串。
-7
mogster_at_boomdesign.no
21 年前
要完全解码为 utf8(这是使用“国家”字符的协议),请使用以下两个
$subject = "=?ISO-8859-1?Q?B=F8lla?=, med =?ISO-8859-1?Q?=F8l?= i baggen";
$subject = imap_utf8($subject);
$subject = utf8_decode($subject);
将以 8 位 ASCII 形式返回主题。
也就是说,这两个函数。

knutm :-)
To Top