Как заставить php скрипт писать данные в кодировке ANSI

Тема в разделе "Как сделать...", создана пользователем Gorev, 6 окт 2013.

  1. Gorev

    Gorev

    Регистр.:
    30 авг 2012
    Сообщения:
    207
    Симпатии:
    36
    Сайт DLE 10. Кодировка 1251.
    Есть парсер погоды. Нужно чтобы он записывал данные в кодировке ANSI. А он пишет в UTF.

    Сам код
    PHP:
    <?php
    /*
    установка в engine.php после switch ( $do ) {
    вставляем
    # Модуль погода ########################################
    case "pogoda" :
            include ENGINE_DIR.'/modules/pogoda.php';
            break;
    ########################################################
    в .htaccess
    ниже RewriteEngine On вставляем
    # Погода на неделю ##############################
    RewriteRule ^pogoda(/?)+$ index.php?do=pogoda [L]
    ##################################################
    */
    if(!defined('DATALIFEENGINE'))
    {
      die(
    "Hacking attempt!");
    }

    if (!
    $pogoda) {
    $city_name 'Дзержинске';
    $url 'http://pogoda.mail.ru/prognoz/dzerzhinsk/extended/'//тянем погоду для Москвы
    if(!is_dir("uploads/pogoda/")){mkdir("uploads/pogoda/"); chmod("uploads/pogoda/"0777);}
    $cache_file=$_SERVER['DOCUMENT_ROOT']."/engine/cache/week.txt";
    if (
    file_exists$cache_file ) &&
        
    date('Y-m-d',filemtime($cache_file))==
        
    date("Y-m-d"mktime(000date("m") , date("d"), date("Y")))){
      
    $f=fopen($cache_file,"rb"); 
      
    $pogoda=fread($f,filesize($cache_file));
    }else{
    function 
    get_web_page$url,$proxy=null )
    {
      
    $uagent "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";
      
    $cookie $_SERVER['DOCUMENT_ROOT']."/cookie.txt";
      
    $ch curl_init$url );

      
    curl_setopt($chCURLOPT_RETURNTRANSFER1);  // возвращает веб-страницу
      
    curl_setopt($chCURLOPT_REFERER,"http://google.ru/");
      
    curl_setopt($chCURLOPT_HEADER0);          // не возвращает заголовки
      
    curl_setopt($chCURLOPT_FOLLOWLOCATION10);  // переходит по редиректам
      
    curl_setopt($chCURLOPT_ENCODING"");        // обрабатывает все кодировки
      
    curl_setopt($chCURLOPT_USERAGENT$uagent);  // useragent
      
    curl_setopt($chCURLOPT_CONNECTTIMEOUT20); // таймаут соединения
      
    curl_setopt($chCURLOPT_TIMEOUT20);        // таймаут ответа
      
    curl_setopt($chCURLOPT_MAXREDIRS10);      // останавливаться после 10-ого редиректа
      
    curl_setopt($chCURLOPT_COOKIEFILE$cookie);
      
    curl_setopt($chCURLOPT_COOKIEJAR$cookie);
      
    curl_setopt($chCURLOPT_PROXY$proxy);
     
      
    $content curl_exec$ch );
      
    $err    curl_errno$ch );
      
    $errmsg  curl_error$ch );
      
    $header  curl_getinfo$ch );
      
    curl_close$ch );
      
    $header['errno']  = $err;
      
    $header['errmsg']  = $errmsg;
      
    $header['content'] = $content;
      return 
    $header;
    }
    function 
    pogoda($week){
    $pogoda '<table width=98% cellspacing=0 cellpadding=0 class="forecast-ext forecast-ext_'.date('m').'"><tr><td><div class="forecast-ext__inner forecast-ext__inner_byhours">'.$week.'</td></tr></table>';
    return 
    $pogoda;

    $result get_web_page$url );
    $html $result['content'];
    preg_match('/<div class=\"forecast-ext__inner forecast-ext__inner_byhours\">(.*?)<\/section>/is',$html,$match);
    $pogoda pogoda($match[1]);
    preg_match_all('/(\/img.*?)\"/',$pogoda,$img);
    //print_r($img);
    $count_img=count($img[0]);
    for (
    $i=0;$i<$count_img;$i++){
    $url_img=$img[1][$i];
    $url_image=str_replace('/img/','http://pogoda.mail.ru/img/',$url_img);
    if(
    preg_match('/img\/new/',$url_image)){
    $url_img $_SERVER['DOCUMENT_ROOT'].str_replace('/img/new/','/uploads/pogoda/',$url_img);}else{
    $url_img $_SERVER['DOCUMENT_ROOT'].str_replace('/img/status/png/weather/med35/onlight/','/uploads/pogoda/',$url_img);}
    if (!
    file_exists($url_img)) {
      
    $image=file_get_contents($url_image);
      
    $fp=fopen($url_img,"w+");
      
    fwrite($fp,$image);
      
    fclose($fp); }
    }

    $imageurl "http://".$_SERVER['HTTP_HOST']."/uploads/pogoda/";
    $pogoda=str_replace('/img/new/',$imageurl,$pogoda);
    $pogoda=str_replace('/img/status/png/weather/med35/onlight/',$imageurl,$pogoda);
    @
    file_put_contents($cache_file,$pogoda);
    }
    $title '<strong>Погода в '.$city_name.' Нижегородской области.<br>Прогноз погоды на неделю</strong>';


    $tpl->load_template('pogoda.tpl');
    $tpl->set('{description}',$title);
    $tpl->set('{static}',$pogoda);
    $tpl->compile('content');
    $tpl->clear();
              }
    ?>
    Буду очень благодарен за помощь
     
  2. stealthdebuger

    stealthdebuger Механик

    Administrator
    Регистр.:
    25 авг 2008
    Сообщения:
    624
    Симпатии:
    1.379
  3. Gorev

    Gorev

    Регистр.:
    30 авг 2012
    Сообщения:
    207
    Симпатии:
    36
    В php я полный ноль :(

    Можете код поправить, чтобы он записывал данные в файл week.txt в кодировке ANSI
     
  4. demolg

    demolg

    Регистр.:
    13 авг 2007
    Сообщения:
    231
    Симпатии:
    76
    PHP:
    $pogoda iconv('UTF-8''Windows-1251'$pogoda);
     
  5. Gorev

    Gorev

    Регистр.:
    30 авг 2012
    Сообщения:
    207
    Симпатии:
    36
    Куда в код эту строчку вставить нужно?
     
  6. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243
    Видимо, перед
    Код:
    return $pogoda;
    
    Или перед
    Код:
    @file_put_contents($cache_file,$pogoda);
    
     
  7. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    сразу после
    PHP:
    $result get_web_page$url );
    вставь
    PHP:
    $html iconv('utf-8','windows-1251',$result['content']);
    ЗЫ: ай я яй копирайты почистили :D
     
    Последнее редактирование: 6 окт 2013
    Gorev нравится это.