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
Форумы портала PHP.SU :: Версия для печати :: Не записываются данные в массив...
Форумы портала PHP.SU » PHP » Программирование на PHP » Не записываются данные в массив...

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

1. webbaster - 24 Марта, 2011 - 06:51:26 - перейти к сообщению
Есть массив и нужно проверить кодировку каждого элемента и если не UTF-8, то перекодировать.

PHP:
скопировать код в буфер обмена
  1. foreach ($url_text as $key => $text_url) {
  2.         $charset=detect_cyr_charset($text_url);
  3.         if ($charset=w) {
  4.                 $url_text[$key]= iconv("CP1251", "UTF-8", $url_text[$key]);
  5.         }
  6.         else $url_text[$key]=$text_url;


Проблема заключается в том, что элементы, которые удовлетворяют условиям не записываются в массив.
Что не так???

Да, кстати, функция определения кодировки строки следующая:


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

А последнюю убрать совсем
3. webbaster - 24 Марта, 2011 - 12:10:27 - перейти к сообщению
DeepVarvar пишет:
4-я строка:
PHP:
скопировать код в буфер обмена
  1. $text_url= iconv("CP1251", "UTF-8", $text_url);

А последнюю убрать совсем


спс
4. JustUserR - 24 Марта, 2011 - 16:35:41 - перейти к сообщению
webbaster пишет:
Да, кстати, функция определения кодировки строки следующая:
Для осуществления решения задачи по проведению определения кодовой таблицы, в соответствии с которой обеспечено размещение информационного поля в локальной верхнем базовом уровне трактования элемента, необходимо предшествующее включение управляющих функциональных объектов, позволяющих осуществить сопоставление параметров размещения ассоциированого информационного поле, в реальном слое данных, на основании стабализация которого возможно обеспеечении инициации эвристического процесса определения кодовой таблицы верхнего уровня

 

Powered by ExBB FM 1.0 RC1