Парсер анекдотов

Тема в разделе "PHP", создана пользователем Дмитрий Кесаев, 2 фев 2012.

Модераторы: latteo
  1. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    Написал от делать нех, парсер анекдотов с http://anekdotme.ru/luchshie-anekdoti

    Выводит только название категории и анекдоты.

    Может кому нить пригодится :D

    PHP:
    <html>
    <head></head>
    <body>
    <?php
    function browser($url) {
    $url="http://anekdotme.ru/lenta/";
    $ch curl_init($url);
    curl_setopt($chCURLOPT_URL,$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
    $html curl_exec($ch);
    curl_close($ch);
    return 
    $html;
    }
    preg_match_all('~<h1>(.*?)</h1>~is'browser($url), $data);
    preg_match_all('~<div class="anekdot_text">(.*?)</div>~is'browser($url), $text);
    print 
    implode($data[1]);
    echo 
    "&nbsp;на сегодня:<br /><br />";
    //print implode('<br /><br />*****<br /><br />', $text[1]); //выводит все анекдоты
    print implode('<br /><br />*****<br /><br />'array_slice($text[1], 01)); //выводит первый анекдот, типа анекдот дня)))
    ?>
    </body></html>
     
    parks, barabula, maxx2205 и 2 другим нравится это.
  2. TAKOY

    TAKOY Постоялец

    Регистр.:
    24 фев 2008
    Сообщения:
    76
    Симпатии:
    5
    Если не трудно, скажи пожалуйста, я поставил к себе на сайт твой парсер, он выдает анекдот, но он в неправильной кодировке (вопросительные знаки вместо бкв). У меня сайт в утф-8, вот когда в мозиле перевожу кодировку страницы в винвоус-1251, анекдот показывается нормально. Что в коде нужно дописать чтобы он отображался у меня на сайте в утф-8? Заранее спасибо.
     
  3. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head> в него прописать; если подинклуживаете файл

    или
    $implo=iconv( "utf-8","cp1251", $implo); использовать ИМХо наподобии этого
     
  4. TAKOY

    TAKOY Постоялец

    Регистр.:
    24 фев 2008
    Сообщения:
    76
    Симпатии:
    5
    я извиняюсь, в пхп не силен, вот так выглядит (ту строчку поставил, но не знаю правильно или нет), пробовал оставлять там только утф-8 или цп1251, ничего не помогает(

    PHP:
    <?php
    function browser($url) {
    $url="http://anekdotme.ru/luchshie-anekdoti/";
    $ch curl_init($url);
    curl_setopt($chCURLOPT_URL,$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
    $html curl_exec($ch);
    curl_close($ch);
    return 
    $html;
    }
    $implo=iconv"utf-8","cp1251"$implo);
    preg_match_all('~<h1>(.*?)</h1>~is'browser($url), $data);
    preg_match_all('~<div class="anekdot_text">(.*?)</div>~is'browser($url), $text);
    print 
    implode($data[1]);
    echo 
    "&nbsp;на сегодня:<br /><br />";
    //print implode('<br /><br />*****<br /><br />', $text[1]); //выводит все анекдоты
    print implode('<br /><br />*****<br /><br />'array_slice($text[1], 01)); //выводит первый анекдот, типа анекдот дня)))
    ?>
    Если не сложно напиши полностью код с той строчкой или скажи под какой строкой ее подставить
    вот сайт
     
  5. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    Для UTF-8...

    2 слова на сегодня переведете сами)))

    PHP:
    <html>
    <head></head>
    <body>
    <?php
    function browser($url) {
    $url="http://anekdotme.ru/luchshie-anekdoti/";
    $ch curl_init($url);
    curl_setopt($chCURLOPT_URL,$url);
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
    $html curl_exec($ch);
    curl_close($ch);
    return 
    $html;
    }
    preg_match_all('~<h1>(.*?)</h1>~is'browser($url), $data);
    preg_match_all('~<div class="anekdot_text">(.*?)</div>~is'browser($url), $text);
     
    $string join(','$data[1]);
    $string=iconv"windows-1251","utf-8"$string);
    echo 
    $string;
     
    echo 
    "&nbsp;на сегодня:<br /><br />";
    //print implode('<br /><br />*****<br /><br />', $text[1]); //выводит все анекдоты
    //print implode('<br /><br />*****<br /><br />', array_slice($text[1], 0, 1)); //выводит первый анекдот, типа анекдот дня)))
    $string1 join(','array_slice($text[1], 01));
    $string1=iconv"windows-1251","utf-8"$string1);
    echo 
    $string1;
     
    ?>
    </body></html>
     
  6. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
  7. gothmog

    gothmog Постоялец

    Регистр.:
    18 июн 2011
    Сообщения:
    60
    Симпатии:
    24
    А если хидер послать вначале?
    Код:
    <?php
    header('Content-Type: text/html; charset=windows-1251');
    дальше код парсера..
     
  8. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Так сайт в utf-8 какой смысл выдавать кодеровку win-1251 ?
     
  9. cocucka

    cocucka

    Регистр.:
    14 июн 2006
    Сообщения:
    218
    Симпатии:
    149
    А как к DLE прикрутить?Создал статическую страницу,вставил код как"Исходный текст HTML без фильтрации и изменений",сохранил.Но ничего не выводит кроме
    (.*?)~is', browser($url), $data); preg_match_all('~
    (.*?)
    ~is', browser($url), $text); $string = join(',', $data[1]); $string=iconv( "windows-1251","utf-8", $string); echo $string; echo " на сегодня:

    "; //print implode('

    *****

    ', $text[1]); //выводит все анекдоты //print implode('

    *****

    ', array_slice($text[1], 0, 1)); //выводит первый анекдот, типа анекдот дня))) $string1 = join(',', array_slice($text[1], 0, 1)); $string1=iconv( "windows-1251","utf-8", $string1); echo $string1; ?>
     
  10. TAKOY

    TAKOY Постоялец

    Регистр.:
    24 фев 2008
    Сообщения:
    76
    Симпатии:
    5
    Злобный бабко благодарю, все работает отлично! сосиска, я конечно не спец по скриптам, но в html страничку обычную не получится вставить на прямую этот код, его можно пихнуть (я так и сделал) напрямую index.php ( или template.php, что там на вордпресе ненаю) твоего шаблона (скина) сайта.