mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-23 07:09:20 +01:00
introduce detect_encoding functionality as a static function (used in decodeMailHeader as of now)
This commit is contained in:
parent
97781b727d
commit
5b295573dd
@ -1029,6 +1029,25 @@ class translation
|
|||||||
return self::$db->select(self::LANG_TABLE,'message_id',$where,__LINE__,__FILE__)->fetchColumn();
|
return self::$db->select(self::LANG_TABLE,'message_id',$where,__LINE__,__FILE__)->fetchColumn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* detect_encoding - try to detect the encoding
|
||||||
|
* only to be used if the string in question has no structure that determines his encoding
|
||||||
|
* @param string - to be evaluated
|
||||||
|
* @return string - encoding
|
||||||
|
*/
|
||||||
|
static function detect_encoding($string) {
|
||||||
|
static $list = array('utf-8', 'iso-8859-1', 'windows-1251'); // list may be extended
|
||||||
|
if (function_exists('iconv'))
|
||||||
|
{
|
||||||
|
foreach ($list as $item) {
|
||||||
|
$sample = iconv($item, $item, $string);
|
||||||
|
if (md5($sample) == md5($string))
|
||||||
|
return $item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return self::$mbstring ? strtolower(mb_detect_encoding($string)) : 'iso-8859-1'; // we choose to return iso-8859-1 as default
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the decoded string meeting some additional requirements for mailheaders
|
* Return the decoded string meeting some additional requirements for mailheaders
|
||||||
*
|
*
|
||||||
@ -1066,7 +1085,7 @@ class translation
|
|||||||
$convertAtEnd = false;
|
$convertAtEnd = false;
|
||||||
foreach((array)$elements as $element)
|
foreach((array)$elements as $element)
|
||||||
{
|
{
|
||||||
if ($element->charset == 'default') $element->charset = 'iso-8859-1';
|
if ($element->charset == 'default') $element->charset = self::detect_encoding($element->text);
|
||||||
if ($element->charset != 'x-unknown')
|
if ($element->charset != 'x-unknown')
|
||||||
{
|
{
|
||||||
if( strtoupper($element->charset) != 'UTF-8') $element->text = preg_replace($sar,$rar,$element->text);
|
if( strtoupper($element->charset) != 'UTF-8') $element->text = preg_replace($sar,$rar,$element->text);
|
||||||
|
Loading…
Reference in New Issue
Block a user