PHP – 使用 iconv_mime_decode_headers() 一次解码多个 MIME 头字段
在PHP中,iconv_mime_decode_headers()函数用于一次解码多个MIME头字段。它是PHP中的内置函数。
语法
iconv_mime_decode_headers($str_headers, $int_mode, $str_encoding)
参数
该iconv_mime_decode_headers()函数接受三个不同的参数-$headers、$mode和$encoding。
$headers-$header参数用于编码的标头。它是一个字符串类型参数。
$mode-$mode参数确定在iconv_mime_decode_headers()遇到变形的MIME标头字段时的行为。我们可以使用以下位掩码的任意组合。
可接受的位掩码列表iconv_mime_decode_headers()
ICONV_MIME_DECODE_STRICT
ICONV_MIME_DECODE_CONTINUE_ON_ERROR
ICONV_MIME_DECODE_STRICT- 如果设置了iconv_mime_decode_strict,则给定的标头完全符合解码,但默认情况下禁用此选项,因为许多损坏的邮件用户代理不符合要求并且不产生正确的MIME标头。
ICONV_MIME_DECODE_CONTINUE_ON_ERROR- 如果iconv_mime_decode_continue_on_error()设置了该参数,它会尝试忽略任何语法错误并继续处理给定的标头。
$encoding -编码是一个可选参数,用于指定表示结果的字符集。iconv.internal_encoding如果省略或为空,将使用。
返回值
该iconv_mime_decode_headers()函数返回一个关联数组,其中包含成功时标头指定的一整套MIME标头字段,或者如果在解码过程中出现任何错误,则返回False。
示例1
输出结果Received: from localhost (localhost [127.0.0.1]) by localhost with SMTP id xyz for; Mon, 21 Jun 2021 00:00:00 +0000 (UTC) (envelope-from example-return-0000-xyz=xyz.com@example.com) Received: (qmail 0 invoked by uid 65534); 21 Mon 2005 00:00:00 +0000 EOF; $headers = iconv_mime_decode_headers($str_headers, 0, "ISO-8859-1"); print_r($headers); ?>
Array ( [Subject] => Pr�fung Pr�fung [To] => xyz@example.com [Date] => Mon, 21 Jun 2021 00:00:00 +0000 [Message-Id] => [Received] => Array ( [0] => from localhost (localhost [127.0.0.1]) by localhost with SMTP id xyz for ; Mon, 21 Jun 2021 00:00:00 +0000 (UTC) (envelope-from example-return-0000-xyz=xyz.com@example.com) [1] => (qmail 0 invoked by uid 65534); 21 Mon 2005 00:00:00 +0000 ) )