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: xyz@example.com Date: Mon, 21 Jun 2021 00:00:00 +0000 Message-Id: <xyz@example.com> Received: from localhost (localhost [127.0.0.1]) by localhost with SMTP id xyz for <xyz@example.com>; 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); ?> </pre>
輸出
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 ) )
廣告