Проблема с кодировкой при парсинге PHP

Discussion in 'PHP' started by megageorge, 21 Aug 2014.

  1. megageorge

    megageorge New Member

    Joined:
    24 Dec 2010
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    Озадачился я тут значит чутка попарсить сайтец с недвижимостью вот энтот arenda.mirkvartir.ru

    До этого парсеры не писал, потому гугл в помосчь)

    В итоге все встало в самом начале

    PHP:
    $content file_get_contents("http://arenda.mirkvartir.ru/119569346/");
    echo 
    "<pre>";
    echo 
    $content;
    echo 
    "</pre>";
    Сей код выдает жуткую хрень.
    Понимаю что трабла с кодировкой.
    Танцы с бубном в направлениях:
    PHP:
    iconv(),
    mb_convert_encoding(), 
    .
    htaccess AddDefaultCharset
    header
    ('Content-type: text/html; charset=utf-8');
    к успеху не привели =(

    Кто что может подсказать? В пхп вечно заплеты с кодировками =((

    Заранее спасибо

    ЗЫ: Сам скрипт в UTF-8 и сайт, который парсим, тож вроде в ней, а хрень какаято получаецца
     
    #1 megageorge, 21 Aug 2014
    Last edited: 21 Aug 2014
  2. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    дальше в гуголь
     
  3. Dark_cracker

    Dark_cracker Member

    Joined:
    29 May 2009
    Messages:
    73
    Likes Received:
    8
    Reputations:
    1
    PHP:
    <?
    function 
    gzDecode($d) {
        
    $f ord(substr($d31));
        
    $h 10;
        
    $e 0;
        if(
    $f&4) {
            
    $e unpack('v'substr($d102));
            
    $e $e[1];
            
    $h += $e;
        }
        if(
    $f&8) {
            
    // ERROR HERE
            
    $h = @strpos($dchr(0), $h) + 1;
        }
        if(
    $f&16) {
            
    $h strpos($dchr(0), $h) + 1;
        }
        if(
    $f&2) {
            
    $h += 2;
        }
        
    // ERROR HERE
        
    $u = @gzinflate(substr($d$h));
        if(
    $u == false) {
            
    $u $d;
        }
        return 
    $u;
    }
     
    $content file_get_contents("http://arenda.mirkvartir.ru/119569346/"); 
    echo 
    "<pre>"
    echo 
    gzDecode($content); 
    echo 
    "</pre>";  
    файл надо сохранить в utf-8 + bom
     
    1 person likes this.
  4. CE/l/lEP

    CE/l/lEP New Member

    Joined:
    13 Dec 2011
    Messages:
    12
    Likes Received:
    3
    Reputations:
    0
    покопай в сторону iconv()
     
  5. megageorge

    megageorge New Member

    Joined:
    24 Dec 2010
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    спасибо всем, способ от Dark_cracker помог, действительно, выяснилось, что страница приходила сжатой в gzip
    правда сам уже разобрался к тому моменту, но все равно, спс, кому-то еще может пригодиться))