return true;␊ |
}␊ |
␊ |
/**␊ |
* Detect if a string is in a Russian charset.␊ |
*␊ |
* This should be used when the mb_string detection encoding is␊ |
* failing. For example:␊ |
*␊ |
* <pre>␊ |
* $encoding = mb_detect_encoding($string, mb_detect_order(), true);␊ |
* if ($encoding == false) {␊ |
* $encoding = Pluf_Text_UTF8::detect_cyr_charset($string);␊ |
* }␊ |
* </pre>␊ |
*␊ |
* @link http://forum.php.su/topic.php?forum=1&topic=1346␊ |
*␊ |
* @param string ␊ |
* @return string Possible Russian encoding␊ |
*/␊ |
public static function detect_cyr_charset($str) ␊ |
{␊ |
$charsets = array(␊ |
'KOI8-R' => 0,␊ |
'Windows-1251' => 0,␊ |
'CP-866' => 0,␊ |
'ISO-8859-5' => 0,␊ |
'MacCyrillic' => 0␊ |
);␊ |
$length = strlen($str);␊ |
for ($i=0; $i<$length; $i++) {␊ |
$char = ord($str[$i]);␊ |
//non-russian characters␊ |
if ($char < 128 || $char > 256) continue;␊ |
␊ |
//CP866␊ |
if (($char > 159 && $char < 176) || ($char > 223 && $char < 242))␊ |
$charsets['CP-866']+=3;␊ |
if (($char > 127 && $char < 160)) $charsets['CP-866']+=1;␊ |
␊ |
//KOI8-R␊ |
if (($char > 191 && $char < 223)) $charsets['KOI8-R']+=3;␊ |
if (($char > 222 && $char < 256)) $charsets['KOI8-R']+=1;␊ |
␊ |
//WIN-1251␊ |
if ($char > 223 && $char < 256) $charsets['Windows-1251']+=3;␊ |
if ($char > 191 && $char < 224) $charsets['Windows-1251']+=1;␊ |
␊ |
//MAC␊ |
if ($char > 221 && $char < 255) $charsets['MacCyrillic']+=3;␊ |
if ($char > 127 && $char < 160) $charsets['MacCyrillic']+=1;␊ |
␊ |
//ISO-8859-5␊ |
if ($char > 207 && $char < 240) $charsets['ISO-8859-5']+=3;␊ |
if ($char > 175 && $char < 208) $charsets['ISO-8859-5']+=1;␊ |
␊ |
}␊ |
arsort($charsets);␊ |
return key($charsets);␊ |
}␊ |
␊ |
␊ |
/**␊ |