imap_mime_header_decode

(PHP 4, PHP 5)

imap_mime_header_decode — Decode MIME header elements

Описание

array imap_mime_header_decode ( string $text )

Decodes MIME message header extensions that are non ASCII text (see » RFC2047).

Список параметров

text

The MIME text

Возвращаемые значения

The decoded elements are returned in an array of objects, where each object has two properties, charset and text.

If the element hasn't been encoded, and in other words is in plain US-ASCII, the charset property of that element is set to default.

Примеры

Пример #1 imap_mime_header_decode() example

<?php
$text 
"=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@example.com>";

$elements imap_mime_header_decode($text);
for (
$i=0$i<count($elements); $i++) {
    echo 
"Charset: {$elements[$i]->charset}\n";
    echo 
"Text: {$elements[$i]->text}\n\n";
}
?>

Результат выполнения данного примера:

Charset: ISO-8859-1
Text: Keld Jørn Simonsen

Charset: default
Text:  <keld@example.com>

In the above example we would have two elements, whereas the first element had previously been encoded with ISO-8859-1, and the second element would be plain US-ASCII.

Смотрите также

Коментарии

Автор:
A nice way to decode strings is to use the mb_list_encodings(), but I had two problems with it: 
sometimes, the charset is uppercase in the header an lowercase in mb_list_encodings() and sometimes, the charset is not in the mb_list_encodings() list.

<?php
function upperListEncode() { //convert mb_list_encodings() to uppercase
   
$encodes=mb_list_encodings();
    foreach (
$encodes as $encode$tencode[]=strtoupper($encode);
    return 
$tencode;
    }

function 
decode($string) {
   
$tabChaine=imap_mime_header_decode($string);
   
$texte='';
    for (
$i=0$i<count($tabChaine); $i++) {
       
        switch (
strtoupper($tabChaine[$i]->charset)) { //convert charset to uppercase
           
case 'UTF-8'$texte.= $tabChaine[$i]->text//utf8 is ok
               
break;
            case 
'DEFAULT'$texte.= $tabChaine[$i]->text//no convert
               
break;
            default: if (
in_array(strtoupper($tabChaine[$i]->charset),upperListEncode())) //found in mb_list_encodings()
                       
{$texte.= mb_convert_encoding($tabChaine[$i]->text,'UTF-8',$tabChaine[$i]->charset);}
                     else { 
//try to convert with iconv()
                         
$ret iconv($tabChaine[$i]->charset"UTF-8"$tabChaine[$i]->text);   
                          if (!
$ret$texte.=$tabChaine[$i]->text//an error occurs (unknown charset) 
                         
else $texte.=$ret;
                        }                   
                break;
            }
        }
       
    return 
$texte;   
    }
?>
2013-03-04 23:42:03
http://php5.kiev.ua/manual/ru/function.imap-mime-header-decode.html

    Поддержать сайт на родительском проекте КГБ