Ответов: 3 Просмотров: 401
|
Есть массив и нужно проверить кодировку каждого элемента и если не UTF-8, то перекодировать.
PHP:
скопировать код в буфер обмена
foreach ($url_text as $key => $text_url) { $charset=detect_cyr_charset($text_url); if ($charset=w) { $url_text[$key]= iconv("CP1251", "UTF-8", $url_text[$key]); } else $url_text[$key]=$text_url;
Проблема заключается в том, что элементы, которые удовлетворяют условиям не записываются в массив.
Что не так???
Да, кстати, функция определения кодировки строки следующая:
PHP:
скопировать код в буфер обмена
function detect_cyr_charset($str) { 'k' => 0, 'w' => 0, 'd' => 0, 'i' => 0, 'm' => 0 ); for ( $i = 0 , $length = strlen($str); $i < $length; $i++ ) { //non-russian characters if ($char < 128 || $char > 256) continue; //CP866 if (($char > 159 && $char < 176) || ($char > 223 && $char < 242)) $charsets['d']+=LOWERCASE; if (($char > 127 && $char < 160)) $charsets['d']+=UPPERCASE; //KOI8-R if (($char > 191 && $char < 223)) $charsets['k']+=LOWERCASE; if (($char > 222 && $char < 256)) $charsets['k']+=UPPERCASE; //WIN-1251 if ($char > 223 && $char < 256) $charsets['w']+=LOWERCASE; if ($char > 191 && $char < 224) $charsets['w']+=UPPERCASE; //MAC if ($char > 221 && $char < 255) $charsets['m']+=LOWERCASE; if ($char > 127 && $char < 160) $charsets['m']+=UPPERCASE; //ISO-8859-5 if ($char > 207 && $char < 240) $charsets['i']+=LOWERCASE; if ($char > 175 && $char < 208) $charsets['i']+=UPPERCASE; }
|