PHP 5.6.0 released

iconv_mime_decode

(PHP 5)

iconv_mime_decodeBir MIME başlık alanının kodunu çözer

Açıklama

string iconv_mime_decode ( string $kodlanmış_başlık [, int $kip = 0 [, string $karküm = ini_set("iconv.internal_encoding") ]] )

Bir MIME başlık alanının kodunu çözer.

Değiştirgeler

kodlanmış_başlık

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

kip

kip değ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() 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 değ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

Başarı durumunda kodu çözülmüş MIME alanı, aksi takdirde FALSE döner.

Örnekler

Örnek 1 - iconv_mime_decode() örneği

<?php
// Sonuç: "Subject: Prüfung Prüfung"
echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",
                       
0"ISO-8859-1");
?>

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
1
Dirk Becker
1 year ago
While creating a new webmailer, I had to coop with a lot of mails and only half of them were correct encoded!
Often the text is tagged as ISO but in real its UTF :/

After trying a lot of solutions and combination a found a way which seems to work for all our mails. Maybe its usefull to someone else too.

<?php

   
function mime_encode($data)
    {
       
$resp = imap_utf8(trim($data));

        if(
preg_match("/=\?/", $resp))
           
$resp = iconv_mime_decode($data, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, "ISO-8859-15");

        if(
json_encode($resp) == 'null')
           
$resp = utf8_encode($resp);

        return
$resp;
    }

?>
up
0
koronci at aol dot com
1 year ago
A simple and working solution for latin encoding supports Slovak, Czech, Russian ect.
<?php iconv("utf-8", "windows-1250", $SomeWeirdText); ?>

specially for those who strugle with imap_mime_header_decode
up
0
dido dot sevilla at gmail dot com
9 years ago
In PHP versions that have imap_mime_decode built in, it's possible to emulate the operation of this function:

<?php
function iconv_mime_decode($str, $mode=0, $charset="UTF-8")
{
   
$data = imap_mime_header_decode($str);
    if (
count($data) > 0) {
     
// because iconv doesn't like the 'default' for charset
     
$charset = ($data[0]->charset == 'default') ? 'ASCII' : $data[0]->charset;
      return(
iconv($charset, $charset, $data[0]->text));
    }
    return(
"");
}
?>

I've only tried to use this code snippet to decode ISO-2022-JP messages to UTF-8, but I see no reason why it shouldn't work in other cases.
To Top