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.
iconv_mime_decode
(PHP 5)
iconv_mime_decode — Décode un champ d'en-tête MIME
Description
string iconv_mime_decode
( string $encoded_header
[, int $mode
[, string $charset
]] )
Décode un champ d'en-tête MIME.
Liste de paramètres
- encoded_header
-
L'en-tête encodé, sous la forme d'une chaîne de caractères.
- mode
-
mode détermine une alternative dans le cas où iconv_mime_decode() rencontre un champ d'en-tête MIME mal formé.
Masques acceptables pour la fonction iconv_mime_decode() Valeur Constante Description 1 ICONV_MIME_DECODE_STRICT Si défini, l'en-tête correspondante sera décodé en suivant strictement le standard » RFC2047. Cette option est désactivée par défaut, car il existe beaucoup de mauvais clients mails qui ne suivent pas ce standard et donc, produisent de mauvaises en-têtes MIME. 2 ICONV_MIME_DECODE_CONTINUE_ON_ERROR Si défini, iconv_mime_decode() essaie de continuer à décoder l'en-tête passée même si des erreurs apparaissent. - charset
-
Le paramètre par défaut charset spécifie le jeux de caractères a utilisé pour représenter le résultat. S'il est omis, iconv.internal_encoding sera utilisé.
Valeurs de retour
Retourne un champs MIME en cas de succès, ou FALSE si une erreur survient durant le décodage.
Exemples
Exemple #1 Exemple avec iconv_mime_decode()
<?php
// Ceci affichera : "Subject: Prüfung Prüfung"
echo iconv_mime_decode("Subject: =?UTF-8?B?UHLDvGZ1bmcgUHLDvGZ1bmc=?=",
0, "ISO-8859-1");
?>
iconv_mime_decode
dido dot sevilla at gmail dot com
09-Mar-2005 08:00
09-Mar-2005 08:00
