iconv_mime_decode_headers

Decodes multiple `MIME` header fields at once

&reftitle.description; ``array``false```iconv_mime_decode_headers` `string` `headers` `int` `mode` 0 ``string``null```encoding`&null;

Decodes multiple `MIME` header fields at once.

&reftitle.parameters;

`headers`

- The encoded headers, as a string.

`mode`

- `mode` determines the behaviour in the event `iconv_mime_decode_headers` encounters a malformed `MIME` header field. You can specify any combination of the following bitmasks.

  ## Bitmasks acceptable to `iconv_mime_decode_headers`

  Value | Constant | Description
  1 | ICONV_MIME_DECODE_STRICT | If set, the given header is decoded in full conformance with the standards defined in RFC2047. This option is disabled by default because there are a lot of broken mail user agents that don't follow the specification and don't produce correct `MIME` headers.
  2 | ICONV_MIME_DECODE_CONTINUE_ON_ERROR | If set, `iconv_mime_decode_headers` attempts to ignore any grammatical errors and continue to process a given header.

`encoding`

- The optional `encoding` parameter specifies the character set to represent the result by. If omitted or &null;, iconv.internal_encoding will be used.

&reftitle.returnvalues;

Returns an associative array that holds a whole set of `MIME` header fields specified by `headers` on success, or &false; if an error occurs during the decoding.

Each key of the return value represents an individual field name and the corresponding element represents a field value. If more than one field of the same name are present, `iconv_mime_decode_headers` automatically incorporates them into a numerically indexed array in the order of occurrence. Note that header names are not case-insensitive.

&reftitle.changelog;

&Version; | &Description;
8.0.0 | `encoding` is nullable now.

&reftitle.examples;

### `iconv_mime_decode_headers` example

    <?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_string, 0, "ISO-8859-1");
    print_r($headers);
    ?>

&example.outputs;

    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
            )

    )

&reftitle.seealso;

- `iconv_mime_decode`
- `mb_decode_mimeheader`
- `imap_mime_header_decode`
- `imap_base64`
- `imap_qprint`