1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Как вывести RSS на страницу PHP

Тема в разделе "Web Coding", создана пользователем Alexodua, 22 ноя 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Alexodua

    Alexodua Писатель

    Регистр.:
    6 ноя 2007
    Сообщения:
    9
    Симпатии:
    0
    Как вывести RSS FEED на страницу?
    Вывожу щас скриптиком RSS2HTML, но он выводит только Header и Description. Есть ли просенький скрипт который грабит и выводит полностью всю новость? Кто что посоветует?
     
  2. prokopa

    prokopa

    Регистр.:
    27 июн 2007
    Сообщения:
    402
    Симпатии:
    105
    не встречал. да и задача не слохная. можно и самому написать за 10 минут
     
  3. kmj

    kmj Создатель

    Регистр.:
    28 окт 2007
    Сообщения:
    10
    Симпатии:
    0
    берешь MagpieRSS или LastRSS они из рсс делают тебе структуру данных, которую удобно выводить... шаблончик сделал и все дела)
     
  4. Alexodua

    Alexodua Писатель

    Регистр.:
    6 ноя 2007
    Сообщения:
    9
    Симпатии:
    0
    Сегодня попробую. Посмотрю что получится.:)
     
  5. kmj

    kmj Создатель

    Регистр.:
    28 окт 2007
    Сообщения:
    10
    Симпатии:
    0
    сам пользуюсь LastRSS, только потому, что она выше в выдаче гугла))) вобще очень удобная штука. и парсит не хмл, а каким-то образом регэкспами и манип. со строками) так что буду рад, если тебе поможет.
     
  6. Waserd

    Waserd Писатель

    Регистр.:
    22 июн 2007
    Сообщения:
    4
    Симпатии:
    0
    ну собственно xml и парсится регэкспами =)

    rss можно кстати вообще не парсить.
    http://www.google.com/search?client=opera&rls=ru&q=rss+css&sourceid=opera&ie=utf-8&oe=utf-8
    вот читаем на эту тему
     
  7. Chel

    Chel

    Регистр.:
    7 янв 2007
    Сообщения:
    230
    Симпатии:
    23
    Вывожу так, но только *.rdf

    PHP:
    <?php

    function startElement($parser$name$attrs) {
    global 
    $tag$rss;
    if (
    $name == 'RSS')
    $rss '^RSS';
    elseif (
    $name == 'RDF:RDF')
    $rss '^RDF:RDF';

    $tag .= '^' $name;
    }

    function 
    endElement($parser$name) {
    global 
    $tag;
    global 
    $itemCount$items;
    if (
    $name == 'ITEM') {
    $itemCount++;
    if (!isset(
    $items[$itemCount])) $items[$itemCount] = array('title' => '''link' => '''desc' => '''pubdate' => '');
    }

    $tag substr($tag0strrpos($tag'^'));
    }

    function 
    characterData($parser$data) {
    global 
    $tag$chanTitle$chanLink$chanDesc$rss$imgTitle$imgLink$imgUrl;
    global 
    $items$itemCount;

    $rssChannel '';
    if (
    $data) {
    if (
    $tag == $rss '^CHANNEL^TITLE') {
    $chanTitle .= $data;
    } elseif (
    $tag == $rss '^CHANNEL^LINK') {
    $chanLink .= $data;
    } elseif (
    $tag == $rss '^CHANNEL^DESCRIPTION') {
    $chanDesc .= $data;
    }
    if (
    $rss == '^RSS'$rssChannel '^CHANNEL';

    if (
    $tag == $rss $rssChannel '^ITEM^TITLE') {
    $items[$itemCount]['title'] .= $data;
    } elseif (
    $tag == $rss $rssChannel '^ITEM^LINK') {
    $items[$itemCount]['link'] .= $data;
    } elseif (
    $tag == $rss $rssChannel '^ITEM^DESCRIPTION') {
    $items[$itemCount]['desc'] .= $data;
    } elseif (
    $tag == $rss $rssChannel '^ITEM^PUBDATE') {
    $items[$itemCount]['pubdate'] .= $data;
    } elseif (
    $tag == $rss $rssChannel '^IMAGE^TITLE') {
    $imgTitle .= $data;
    } elseif (
    $tag == $rss $rssChannel '^IMAGE^LINK') {
    $imgLink .= $data;
    } elseif (
    $tag == $rss $rssChannel '^IMAGE^URL') {
    $imgUrl .= $data;
    }
    }

    }

    function 
    parseRSS($url) {
    global 
    $tag$chanTitle$chanLink$chanDesc$rss$items$itemCount$imgTitle$imgLink$imgUrl;
    $chanTitle '';
    $chanLink '';
    $chanDesc '';
    $imgTitle '';
    $imgLink '';
    $imgUrl '';
    $tag '';
    $rss '';

    global 
    $items$itemCount;

    $itemCount 0;
    $items = array(=> array('title' => '''link' => '''desc' => '''pubdate' => ''));

    $xml_parser xml_parser_create();
    xml_set_element_handler($xml_parser"startElement""endElement");
    xml_set_character_data_handler($xml_parser"characterData");

    @
    $fp fopen($url"r");
    $data "";
    while (
    true) {
    @
    $datas fread($fp4096);
    if (
    strlen($datas) == 0) {
    break;
    }
    $data .= $datas;
    }

    @
    fclose($fp);

    if (
    $data != '') {
    $xmlresult xml_parse($xml_parser$data);
    $xmlerror xml_error_string(xml_get_error_code($xml_parser));
    $xmlcrtline xml_get_current_line_number($xml_parser);

    if (
    $xmlresult)
    displayData();
    else
    print(
    "Error parsing this feed !<br />Error: $xmlError , at line: $xmlCrtline");
    } else {
    print(
    "Error while retriving feed $url");
    }

    xml_parser_free($xml_parser);
    }

    function 
    displayData() {
    global 
    $chanTitle$chanLink$chanDesc$rss$items$itemCount$imgTitle$imgLink$imgUrl;
    global 
    $items$itemCount;
    ?>
    <?= $chanTitle ?>
    <div>
    <a href="<?= $chanLink ?>"><img src="<?= $imgUrl ?>" alt="<?= $imgTitle ?>" border="0" /></a>
    <h1><?= $chanTitle ?></h1>
    <h3><?= $chanDesc ?></h3>
    </div>
    <hr />
    <?php
    for($i 0;$i count($items)-1;$i++) {
    echo 
    "<h4>".$items[$i]['title']."</h4>";
    echo 
    "<h5>".$items[$i]['pubdate']."</h5>";
    echo 
    "<a href='".$items[$i]['link']."'>".$items[$i]['desc']."</a>";
    }
    ?>


    <?php }

    $url="http://www.kazna.ru/news.rdf";
    parseRSS($url);
    ?>

                       
     
    agronom нравится это.
Статус темы:
Закрыта.