Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Функция перекодировки заголовков почты
 
 автор: scva   (24.12.2010 в 13:17)   письмо автору
 
 

кусок заголовка
[code=?koi8-r?B?7/Du4uXw6uA=?=][/code]

function decode_mime_string($subject) {
    $string = $subject;
    if(($pos = strpos($string,"=?")) === false) return $string;
  while(!($pos === false)) {
        $newresult .= substr($string,0,$pos);  
        $string = substr($string,$pos+2,strlen($string));
        $intpos = strpos($string,"?");
        $charset = substr($string,0,$intpos);
        $enctype = strtolower(substr($string,$intpos+1,1));
        $string = substr($string,$intpos+3,strlen($string));
        $endpos = strpos($string,"?=");
        $mystring = substr($string,0,$endpos);
        $string = substr($string,$endpos+2,strlen($string));
        if($enctype == "q") $mystring = quoted_printable_decode(ereg_replace("_"," ",$mystring));
        else if ($enctype == "b") $mystring = base64_decode($mystring);
        $newresult .= $mystring;
        $pos = strpos($string,"=?");
    }

    $result = $newresult.$string;
    if(ereg("koi8-r", $subject)) 
    {
        $result = convert_cyr_string($result, "k", "w");
        $result = iconv("windows-1251","utf-8",$result);
    }
    if(ereg("KOI8-R", $subject)) 
    {
        $result = convert_cyr_string($result, "k", "w");
        $result = iconv('windows-1251','utf-8',$result);
    }
    
    return $result;
}


данная функция декодирует заголовки почты в читабельный вид
у меня кодировка в utf-8, так вот если письмо приходит в windows-1251? то как перекодировать в utf-8. Пробывал так

if(ereg("windows-1251", $subject)) 
    {
        $result = iconv('windows-1251',"utf-8",$result);
    }


но есть один баг, если content-type: text/plain то перекодировка проходит нормально, а если же content-type: text/html то кодировка не проходит и все символы заменяются на знаки вопросов.

  Ответить  
 
 автор: Trianon   (24.12.2010 в 13:35)   письмо автору
 
   для: scva   (24.12.2010 в 13:17)
 

Вы что-то путаете.
методика кодирования и кодовая страница полей заголовка письма (Subject и другие поля) в общем случае никакне связаны с методикой кодирования и кодовой страницей содержимого (Content-Type).

  Ответить  
 
 автор: scva   (24.12.2010 в 13:45)   письмо автору
 
   для: Trianon   (24.12.2010 в 13:35)
 

верно, но как мне отбражать заголвок windows-1251 в utf-8

  Ответить  
 
 автор: scva   (24.12.2010 в 13:46)   письмо автору
 
   для: scva   (24.12.2010 в 13:45)
 

если браузер переключить на кодировку кирилица windows-1251, то они отбражаются нормально.


Перформулирую фразу в первом посте "данная функция приводит заголовки почты в читабельный вид"

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования