PHP 8.4.2 Released!

iconv_mime_decode_headers

(PHP 5, PHP 7, PHP 8)

iconv_mime_decode_headersBir defada birden fazla MIME başlık alanını çözümler

Açıklama

iconv_mime_decode_headers(string $kodlanmış_başlıklar, int $kip = 0, ?string $karküm = null): array|false

Çok sayıda MIME başlık alanını bir kerede çözümler.

Bağımsız Değişkenler

kodlanmış_başlıklar

Bir dizge olarak kodlanmış başlıklar.

kip

kip bağımsız değişkeni, işlev bozuk bir MIME başlık alanı saptadığı takdirde işlevin davranışını belirler. Aşağıdaki değerleri bir bit maskesi olarak belirtebilirsiniz:

iconv_mime_decode_headers() tarafından desteklenen bit maskeleri
Değer Sabit Açıklama
1 ICONV_MIME_DECODE_STRICT Belirtilirse, başlık, » RFC2047'de tanımlanan standartlarla tam uyumlu kodlanır. Bu seçenek öntanımlı olarak kapalıdır, çünkü belirtime uymayan ve doğru MIME başlıkları üretmeyen pek çok kullanıcı eposta istemcisi var.
2 ICONV_MIME_DECODE_CONTINUE_ON_ERROR Belirtilirse, iconv_mime_decode_headers() işlevi yazım hatalarını yoksayıp belirtilen başlığı işlemeye devam etmeye çalışır.

karküm

İsteğe bağlı karküm bağımsız değişkeni elde edilecek dizgenin karakter kümesini belirler. Belirtilmezse, dizgenin karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olacağı varsayılır.

Dönen Değerler

kodlanmış_başlıklar dizgesi ile belirtilen kodlanmış MIME başlık alanlarını çözümleyip sonucu bir ilişkisel dizi olarak döndürür. Bu işlem sırasında bir hata oluşursa false döner.

Dönen dizideki her anahtar bir başlık alanına, her değer de anahtarla ilgili bir başlık değerine karşılıktır. Aynı isimde birden fazla alan varsa işlev bunları otomatik olarak göründükleri sırayla sayısal indisli bir diziye yerleştirir. Başlık isimlerinin harf büyüklüğüne duyarsız oldukları unutulmamalıdır.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 karküm artık boş olabiliyor.

Örnekler

Örnek 1 - iconv_mime_decode_headers() örneği

<?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);
?>

Yukarıdaki örneğin çıktısı:

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
        )

)

Ayrıca Bakınız

add a note

User Contributed Notes 2 notes

up
0
phpmanual at NOSPAM dot headbank dot co dot uk
21 days ago
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.
up
0
TheConstructor
14 years ago
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_string, 0, "ISO-8859-1");

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

print_r($headers);
?>
To Top