iconv_mime_decode_headers

(PHP 5)

iconv_mime_decode_headers — Декодирует несколько полей заголовка MIME

Описание

array iconv_mime_decode_headers ( string $encoded_headers [, int $mode [, string $charset ]] )

Возвращает ассоциативный массив с полями MIME-заголовка, переданного параметром encoded_headers , или FALSE в случае ошибки.

Каждый ключ элемента возвращаемого массива представляет отдельное имя поля, а сам элемент - его значение. если в заголовке несколько полей с одинаковым именем, они помещаются в подчинённый массив с числовыми индексами.

Параметр mode определяет поведение в случае обнаружения неправильного поля заголовка. можно указать любую комбинацию следующих битовых масок.

Битовые маски iconv_mime_decode_headers()
Значение Константа Описание
1 ICONV_MIME_DECODE_STRICT Строго следовать стандартам, определённым в » RFC2047. К сожалению, много проприетарных програм электронной почты не следуют стандартам, и, чтобы потокать им, этот режим по умолчанию отключён.
2 ICONV_MIME_DECODE_CONTINUE_ON_ERROR Попытаться продолжить обработку в случае обнаружения ошибки.

Если параметр charset опущен, предполагается, что кодировка строки string равна iconv.internal_charset.

Пример #1 Пример iconv_mime_decode_headers()

<?php
$headers_string 
= <<<EOF
Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=
To: example@example.com
Date: Thu, 1 Jan 1970 00:00:00 +0000
Message-Id: <example@example.com>
Received: from localhost (localhost [127.0.0.1]) by localhost
    with SMTP id example for <example@example.com>
    Thu, 1 Jan 1970 00:00:00 +0000 (UTC)
    (envelope-from example-return-0000-example=example.com@example.com)
Received: (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000

EOF;

$headers =  iconv_mime_decode_headers($headers_string0"ISO-8859-1");
print_r($headers);
?>

Результат выполнения данного примера:

Array
(
    [Subject] => Prьfung Prьfung
    [To] => example@example.com
    [Date] => Thu, 1 Jan 1970 00:00:00 +0000
    [Message-Id] => <example@example.com>
    [Received] => Array
        (
            [0] => from localhost (localhost [127.0.0.1]) by localhost with SMTP id example for <example@example.com>; Thu, 1 Jan 1970 00:00:00 +0000 (UTC) (envelope-from example-return-0000-example=example.com@example.com)
            [1] => (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000
        )

)

См. также iconv_mime_decode(), mb_decode_mimeheader(), imap_mime_header_decode(), imap_base64() и imap_qprint().

Коментарии

Автор:
If you need lower-case header-names (as I read the documentation case is not guranteed) try something like

<?php

$headers_string 
= <<<EOF
Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=
To: example@example.com
Date: Thu, 1 Jan 1970 00:00:00 +0000
Message-Id: <example@example.com>
Received: from localhost (localhost [127.0.0.1]) by localhost
    with SMTP id example for <example@example.com>;
    Thu, 1 Jan 1970 00:00:00 +0000 (UTC)
    (envelope-from example-return-0000-example=example.com@example.com)
Received: (qmail 0 invoked by uid 65534); 1 Thu 2003 00:00:00 +0000

EOF;

$headers iconv_mime_decode_headers($headers_string0"ISO-8859-1");

$headers array_combine(array_map("strtolower"array_keys($headers)), array_values($headers));

print_r($headers);
?>
2010-07-12 15:07:25
http://php5.kiev.ua/manual/ru/function.iconv-mime-decode-headers.html
Just in case this catches anyone else: If your headers string has any leading linebreaks, this function will reject it and return an empty array. If that might apply to your input, sanitise it with ltrim().

Trailing empty lines are tolerated/ignored.

Other quirks I noticed just now:

1. Leading whitespace (" " or "\t") in the *first* line will be included in the header's key name in the returned array. ltrim() will prevent that too.

2. Leading whitespace in any subsequent header (before the key) will cause that line to be appended to the preceding header's value, as though it were a run-on of that header.
2024-11-29 20:25:22
http://php5.kiev.ua/manual/ru/function.iconv-mime-decode-headers.html

    Поддержать сайт на родительском проекте КГБ