Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: detect_cyr_charset

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: не правильно определяет заглавные буквы. помогите пожулуйста кто сталкивался
Swart
Отправлено: 23 Сентября, 2008 - 17:23:51
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?
  2. define('LOWERCASE',3);
  3. define('UPPERCASE',1);
  4.  
  5. function detect_cyr_charset($str) {
  6.     $charsets = Array(
  7.                       'k' => 0,
  8.                       'w' => 0,
  9.                       'd' => 0,
  10.                       'i' => 0,
  11.                       'm' => 0
  12.                       );
  13.     for ( $i = 0, $length = strlen($str); $i < $length; $i++ ) {
  14.         $char = ord($str[$i]);
  15.         //non-russian characters
  16.         if ($char < 128 || $char > 256) continue;
  17.        
  18.         //CP866
  19.         if (($char > 159 && $char < 176) || ($char > 223 && $char < 242))
  20.             $charsets['d']+=LOWERCASE;
  21.         if (($char > 127 && $char < 160)) $charsets['d']+=UPPERCASE;
  22.        
  23.         //KOI8-R
  24.         if (($char > 191 && $char < 223)) $charsets['k']+=LOWERCASE;
  25.         if (($char > 222 && $char < 256)) $charsets['k']+=UPPERCASE;
  26.        
  27.         //WIN-1251
  28.         if ($char > 223 && $char < 256) $charsets['w']+=LOWERCASE;
  29.         if ($char > 191 && $char < 224) $charsets['w']+=UPPERCASE;
  30.        
  31.         //MAC
  32.         if ($char > 221 && $char < 255) $charsets['m']+=LOWERCASE;
  33.         if ($char > 127 && $char < 160) $charsets['m']+=UPPERCASE;
  34.        
  35.         //ISO-8859-5
  36.         if ($char > 207 && $char < 240) $charsets['i']+=LOWERCASE;
  37.         if ($char > 175 && $char < 208) $charsets['i']+=UPPERCASE;
  38.        
  39.     }
  40.     arsort($charsets);
  41.     return key($charsets);
  42. }
  43. ?>

не правильно определяет заглавные буквы в кирилице. кодировку определяет как 'd'. стоки я беру из CSV. есть ли альтернатива или поправки?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB