ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

php, iconv, utf-8 - обрезает контент
  #1  
Старый 28.09.2009, 11:50
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию php, iconv, utf-8 - обрезает контент

PHP код:
<?php
set_time_limit
(3600);

$url=array( 
    
        
'11723' => 'Брно'
        
'11414' => 'Карловы Вары'
        
'11418' => 'Марианские Лазни'
        
'11448' => 'Пльзень'
        
'11518' => 'Прага'
        
'11790' => 'Черный Дул'
        
'11412' => 'Яхимов' 
);

foreach( 
$url as $k=>$v ){
echo 
'тип: '.$url[$k].'<br>';
    
$str=file_get_contents'http://weather.yandex.ru/' $k '/details/' );
    
preg_match"'(<table class=\"b-forecast-details\">.+<\/table>)'is"$str$ar );
    if(
$k==11414){echo iconv'UTF-8''CP1251'$ar[1] );exit;}
    if ( isset( 
$ar[1] ) ) {
    echo 
'загружаем...<br>';
        
$ar[1]=str_replace('http://img.yandex.net/i/weather/wind/','/images/weather/',$ar[1]);
        
$ar[1]=str_replace('http://img.yandex.net/i/weather/moon/','/images/weather/',$ar[1]);
        if(
file_put_contentsdirnamedirname__FILE__ ) ) . '/weather/' $k '.html'iconv'UTF-8''CP1251'$ar[1] ) ))echo 'сохраняем...<br>';
    }
}
?>
Почему на странице http://weather.yandex.ru/11414/details/ функция iconv( 'UTF-8', 'CP1251', $ar[1] ); удаляет пол контента?
 
Ответить с цитированием

  #2  
Старый 28.09.2009, 12:07
Аватар для Kaimi
Kaimi
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Используй
PHP код:
function utf8_to_cp1251($s)
        {
            for (
$c=0;$c<strlen($s);$c++)
            {
               
$i=ord($s[$c]);
               if (
$i<=127$out.=$s[$c];
                   if (
$byte2){
                       
$new_c2=($c1&3)*64+($i&63);
                       
$new_c1=($c1>>2)&5;
                       
$new_i=$new_c1*256+$new_c2;
                   if (
$new_i==1025){
                       
$out_i=168;
                   } else {
                       if (
$new_i==1105){
                           
$out_i=184;
                       } else {
                           
$out_i=$new_i-848;
                       }
                   }
                   
$out.=chr($out_i);
                   
$byte2=false;
                   }
               if ((
$i>>5)==6) {
                   
$c1=$i;
                   
$byte2=true;
               }
            }
            return 
$out;
        } 
 
Ответить с цитированием

  #3  
Старый 28.09.2009, 13:24
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

исказило часть символов..
 
Ответить с цитированием

  #4  
Старый 30.09.2009, 09:49
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

еще актуально!
 
Ответить с цитированием

  #5  
Старый 30.09.2009, 10:37
Аватар для krypt3r
krypt3r
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме:
3660186

Репутация: 905


По умолчанию

Забейте на iconv и попробуйте
PHP код:
string mb_convert_encoding  string $str  string $to_encoding  [, mixed $from_encoding  ] ) 
 
Ответить с цитированием

  #6  
Старый 30.09.2009, 13:08
Аватар для WNZRS
WNZRS
Участник форума
Регистрация: 03.09.2009
Сообщений: 179
Провел на форуме:
1014907

Репутация: 90
Отправить сообщение для WNZRS с помощью ICQ
По умолчанию

iconv('utf-8', 'cp1251//IGNORE', $result);
если это исправит, значит обрезалось из-за символа,которого нет в cp1251, я с таким столкнулся когда парсил википедию
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Books PSalm69 Избранное 248 27.10.2009 04:52
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ