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);
?>
iconv_mime_decode_headers
(PHP 5)
iconv_mime_decode_headers — Bir defada birden fazla MIME başlık alanını çözümler
Açıklama
$kodlanmış_başlıklar
[, int $kip = 0
[, string $karküm = ini_set("iconv.internal_encoding")
]] )Çok sayıda MIME başlık alanını bir kerede çözümler.
Değiştirgeler
-
kodlanmış_başlıklar -
Bir dizge olarak kodlanmış başlıklar.
-
kip -
kipdeğiştirgesi, 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ümdeğiştirgesi 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ı özdevinimli olarak göründükleri sırayla sayısal indisli bir diziye yerleştirir.
Ö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
- iconv_mime_decode() - Bir MIME başlık alanının kodunu çözer
- mb_decode_mimeheader() - MIME başlık alanındaki dizgeyi dönüştürür
- imap_mime_header_decode() - MIME başlık elemanlarının kodlamasını açar
- imap_base64() - Base64 kodlu dizgeyi 8 bitlik dizgeye dönüştürür
- imap_qprint() - Bir 7 bitlik dizgeyi 8 bitlik dizgeye dönüştürür
