Раскодировать subject из письма

  • Автор темы CrazyHacKeRs
  • Дата начала

CrazyHacKeRs

Guest
Раскодировать subject из письма

Привет!
=?Windows-1251?B?UmVbM106IOHr4OPu5PDt7vHy/CDn4CDy5ez7IPDg4e7yICsg7+Dw7vfq?=
=?Windows-1251?B?4CDi7u/w8e7i?=

Каким образом расскодировать такие строчки...
 

maxx

слип-стримом в поворот
еще есть
imap_mime_header_decode

ps вопрос такой был уже (я сам его задавал), попробуй поиск
 

Dorbah

Новичок
Код:
    $Subj=$Subject; $arr_parts=array();
    #Если есть кодированный текст, то разбиваем на части
    while ( FALSE!==($begin=strpos($Subj, '=?')) ) { #Пока есть маркеры начала кодированного текста
        if ( 0!==$begin ) {  #Если маркер не в самом начале строки
            $part=substr($Subj, 0, $begin); # Отпилим некодированный кусочек от начала и до маркера включительно
            $Subj=substr($Subj, $begin); # Выпилим этот кусочек из темы от маркера и до конца
        } else { #Тут надо искать два следующих знака вопроса
            # =?windows-1251?B?                    # =?utf-8?Q?
            # ^--$begin    | ^--$coding_type_end
            #              |--$codepage_end
            $codepage_end=strpos($Subj, '?', $begin+2);
            $codepage=substr($Subj, $begin+2, $codepage_end-2);
            $coding_type_end=strpos($Subj, '?', $codepage_end+1);
            $coding_type=substr($Subj, $codepage_end+1, $coding_type_end-$codepage_end-1);
           
            $Subj=substr($Subj, $coding_type_end+1); # Выпилим всё из темы сначала и до знака вопроса $coding_type_end
           
            ##### А вот дальше до конечного маркера идёт кодированный текст, его выковыриваем в $encoded_text
            if ( $end=strpos($Subj, '?=') ) {# Если нашли конец
                $encoded_text=substr($Subj, 0, $end); # Отпилим кусочек от начала и ДО маркера включительно
                $Subj=substr($Subj, $end+3); # Выпилим этот кусочек из темы от маркера и до конца
            } else { # Маркера нету - значит остался кодированный текст до конца строки
                $encoded_text=$Subj; $Subj='';
            }#end if
           
            if ( 'Q'===strtoupper($coding_type) ) {# Если тип Quoted Printable c =
                $decoded_text = preg_replace("/\=/","%", $encoded_text); # то меняем = на % для urlDecode
                $part=rawurldecode($decoded_text);
            } else { #Иначе кодировка Base64
                $text="=?$codepage?$coding_type?$encoded_text?="; #Собираем кусочек правильно
                $part=iconv_mime_decode($text, 2, 'UTF-8'); # Перекодируем
            }#end else Q!==coding_type
           
        }#end else
       
        if ( !empty($part) ) { $arr_parts[]=$part; } #Если не пустой, добавим
    }#end while
   
    if ( !empty($Subj) ) { $arr_parts[]=$Subj; } #Добавим остаток темы
   
    $Subj_FULL=implode($arr_parts);
    echo "Subject='$Subj_FULL'";
 
Сверху