diff --git a/include/class.format.php b/include/class.format.php index af3fb0c31d2a65674631d85a2b90e86d988b5b3e..15cc0d58f6d2e9cf68cb3067a69734cef93168b2 100644 --- a/include/class.format.php +++ b/include/class.format.php @@ -46,6 +46,31 @@ class Format { return $result?array_filter($result):$files; } + + /* encode text into desired encoding - taking into accout charset when available. */ + function encode($text, $charset=null, $encoding='utf-8') { + + //Try auto-detecting charset/encoding + if(!$charset && function_exists('mb_detect_encoding')) + $charset = mb_detect_encoding($text); + + //Cleanup - junk + if($charset && in_array(trim($charset), array('default','x-user-defined'))) + $charset = 'ASCII'; + + if(function_exists('iconv') && $charset) + return iconv($charset, $encoding.'//IGNORE', $text); + elseif(function_exists('iconv_mime_decode')) + return iconv_mime_decode($text, 0, $encoding); + else //default to utf8 encoding. + return utf8_encode($text); + } + + //Wrapper for utf-8 encoding. + function utf8encode($text, $charset=null) { + return Format::enecode($text, $charset, 'utf-8'); + } + function phone($phone) { $stripped= preg_replace("/[^0-9]/", "", $phone); diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php index f3a6fd5c3630d67afd9a935a3f9046f53cb80e75..68f0b6592798575356e507be1a3f86f1404c4d18 100644 --- a/include/class.mailfetch.php +++ b/include/class.mailfetch.php @@ -194,30 +194,17 @@ class MailFetcher { } //Convert text to desired encoding..defaults to utf8 - function mime_encode($text, $charset=null, $enc='utf-8') { //Thank in part to afterburner - - if($charset && in_array(trim($charset), array('default','x-user-defined'))) - $charset = 'ASCII'; - - if(function_exists('iconv') and ($charset or function_exists('mb_detect_encoding'))) { - if($charset) - return iconv($charset, $enc.'//IGNORE', $text); - elseif(function_exists('mb_detect_encoding')) - return iconv(mb_detect_encoding($text, $this->encodings), $enc, $text); - } elseif(function_exists('iconv_mime_decode')) { - return iconv_mime_decode($text, 0, $enc); - } - - return utf8_encode($text); + function mime_encode($text, $charset=null, $encoding='utf-8') { //Thank in part to afterburner + return Format::encode($text, $charset, $encoding); } //Generic decoder - resulting text is utf8 encoded -> mirrors imap_utf8 - function mime_decode($text, $enc='utf-8') { + function mime_decode($text, $encoding='utf-8') { $str = ''; $parts = imap_mime_header_decode($text); foreach ($parts as $part) - $str.= $this->mime_encode($part->text, $part->charset, $enc); + $str.= $this->mime_encode($part->text, $part->charset, $encoding); return $str?$str:imap_utf8($text); }