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()** 函数在成功时返回一个关联数组,其中包含 headers 指定的整套 MIME 头字段;如果解码过程中出现任何错误,则返回 False。
示例 1
<pre> <?php $str_headers = <<<EOF Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?= To: [email protected] Date: Mon, 21 Jun 2021 00:00:00 +0000 Message-Id: <[email protected]> Received: from localhost (localhost [127.0.0.1]) by localhost with SMTP id xyz for <[email protected]>; Mon, 21 Jun 2021 00:00:00 +0000 (UTC) (envelope-from [email protected]) 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); ?> </pre>
输出
Array ( [Subject] => Pr�fung Pr�fung [To] => [email protected] [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 [email protected]) [1] => (qmail 0 invoked by uid 65534); 21 Mon 2005 00:00:00 +0000 ) )
广告