За последние 24 часа нас посетили 20802 программиста и 1123 робота. Сейчас ищут 329 программистов ...

Импорт RSS

Тема в разделе "PHP для новичков", создана пользователем ART79, 25 май 2007.

  1. ART79

    ART79 Активный пользователь

    С нами с:
    25 май 2007
    Сообщения:
    5
    Симпатии:
    0
    не мог бы какой добрый товарищ подсказать код импорта RSS новости с одного сайта на другой. а?

    при условии что на сервере запрещены исходящие коннекты
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    ART79
    Если совсем запрещены то это невозможно в принципе (разве что локально запускать скрипт и по FTP заливать новости на сервак), а если просто не включен "allow_url_fopen" то я готовых не знаю, никогда не искал...

    (я выкладывал тут один самописный, но он работает только с "allow_url_fopen")
     
  3. ART79

    ART79 Активный пользователь

    С нами с:
    25 май 2007
    Сообщения:
    5
    Симпатии:
    0
    при вставке RSS скрипта выводится следующее
    (ссылка на скрипт http://forum.searchengines.ru/showthrea ... 276&page=2)
    и мне сказали что это связано с ... в первом посте писал я об этом

    Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in ......

    но при этом решении должно быть
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    socket(s), curl
     
  5. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    440Hz
    Ты наверное не читал топик на "searchengines", поясню сразу ART79 хочет полностью готовое решение, сам он не разбирётся чё с этим делать. (не программер он)
     
  6. ART79

    ART79 Активный пользователь

    С нами с:
    25 май 2007
    Сообщения:
    5
    Симпатии:
    0
    440Hz


    не оченял понял вас =)
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ща стакан допью. помогу...
     
  8. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    да я смотрю у сеошников началась рсс-мания :)
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Отожжем в пятницу!

    PHP:
    1.  
    2. <?
    3.  
    4. // выдирание RSS потоков
    5. // 440hz
    6.  
    7. ### TOOLS ###
    8.  
    9. function GetXMLFirstVal($r,$t) {
    10.         if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    11.         return false;
    12. }
    13.  
    14. function GetXMLAllVal($r,$t) {
    15.         if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    16.         return array();
    17. }
    18.  
    19. function GetStream($URL,$mode=0) {
    20.  
    21.  
    22.     switch($mode) {
    23.  
    24.         // php
    25.         case 0:
    26.             $results = file_get_contents($URL);
    27.             break;
    28.  
    29.         // CURL
    30.         case 1:
    31.  
    32.             $ch = curl_init();
    33.             curl_setopt ($ch, CURLOPT_URL, $URL);           // Destination URL
    34.             curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);   // Output to a variable
    35.             curl_setopt ($ch, CURLOPT_POST, 0);             // Use HTTP POST
    36.             curl_setopt ($ch, CURLOPT_TIMEOUT, 20);         // Default Timeout
    37.  
    38.             $results = curl_exec($ch);  
    39.             if(curl_error($ch)) {
    40.                 print_r(curl_getinfo($ch));
    41.                 exit();
    42.             }
    43.  
    44.             break;
    45.  
    46.         // SOCKETS
    47.         case 2:
    48.  
    49.             $info = parse_url($URL);
    50.  
    51.             $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    52.             if ($socket < 0) {
    53.                 echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
    54.                 exit();
    55.             }
    56.             $result = socket_connect($socket, $info['host'], 80);
    57.             if ($result < 0) {
    58.                 echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
    59.             }
    60.  
    61.             $in  = "GET ".$info['path']." HTTP/1.1\r\n";
    62.             $in .= "Host: ".$info['host']."\r\n";
    63.             $in .= "Connection: Close\r\n\r\n";
    64.  
    65.             socket_write($socket, $in, strlen($in));
    66.  
    67.             $out = '';
    68.             $results = '';
    69.  
    70.             while ($out = socket_read($socket, 2048)) {
    71.                 $results .= $out;
    72.             }
    73.  
    74.             socket_close($socket);
    75.  
    76.             break;
    77.        
    78.         default:
    79.             $results = '';
    80.     }
    81.     return $results;
    82. }
    83.  
    84. ### TOOLS ###
    85.  
    86. // RSS потоки
    87. // ТОЛЬКО ссылки БЕЗ параметров!
    88. // get.rss?a=b непокатит. тогда нужно юзать CURL
    89.  
    90. $RSSS = array();
    91. $RSSS[] = 'http://news.yandex.ru/computers.rss';
    92. $RSSS[] = 'http://news.yandex.ru/security.rss';
    93. $RSSS[] = 'http://news.yandex.ru/internet.rss';
    94.  
    95. // перебираем потоки
    96. foreach($RSSS AS $RSS) {
    97.  
    98.     print("\n$RSS");
    99.  
    100.     // получаем контент
    101.     // 0 - php
    102.     // 1- curl
    103.     // 2- sock
    104.     $XML = GetStream($RSS,2);
    105.  
    106.     if($XML) {
    107.  
    108.         // получаеми список всех ITEM
    109.         $ITEMS = GetXMLAllVal($XML,'item');
    110.  
    111.         // перебираем ITEM
    112.         foreach($ITEMS AS $ITEM) {
    113.  
    114.             // получаем данные
    115.             $TITLE = GetXMLFirstVal($ITEM,'title');
    116.             $LINK  = GetXMLFirstVal($ITEM,'link');
    117.             $DESC  = GetXMLFirstVal($ITEM,'description');
    118.             $DATE  = GetXMLFirstVal($ITEM,'pubDate');
    119.             $CAT   = GetXMLFirstVal($ITEM,'category');
    120.  
    121.             // ver 2.0
    122.             if(!$DATE) {
    123.                 $DATE = GetXMLFirstVal($ITEM,'dc:date');
    124.             }
    125.  
    126.             // конвертим дату в unixtime
    127.             if($DATE) $DATE = strtotime($DATE);
    128.             else      $DATE = time();
    129.  
    130.             // преобразуем спецсимволы
    131.             $TITLE = html_entity_decode($TITLE,ENT_QUOTES);
    132.             $DESC  = html_entity_decode($DESC,ENT_QUOTES);
    133.             $CAT   = html_entity_decode($CAT,ENT_QUOTES);
    134.  
    135.             print("\n     [".date('d.m.Y H:i',$DATE)."] - [$TITLE]");
    136.         }
    137.     }
    138. }
    139.  
    140. // что б в шелле строку переводило ...
    141. print("\n");
    142.  
    143. ?>
    144.  
    Код (Text):
    1.  
    2. </rss>
    3. gw(root):/usr/home/440hz#>php rsscurl.php
    4.  
    5. http://news.yandex.ru/computers.rss
    6.      [24.05.2007 19:21] - [Sony представил гибкий дисплей с 16,7 млн цветов]
    7.      [25.05.2007 13:44] - [Intel выпустит самый тонкий ноутбук]
    8.      [25.05.2007 05:40] - [Динозавры умели хорошо плавать]
    9.      [25.05.2007 13:44] - [Nokia Siemens Networks модернизирует сеть МГТС]
    10.      [24.05.2007 20:20] - [Новые видеокарты Nvidia будут в три раза мощнее адаптеров предыдущего поколения]
    11.      [25.05.2007 00:40] - ["Мегафон" не делится - Правообладатели недовольны отчислениями оператора]
    12.      [25.05.2007 14:41] - [Meizu M6 SE - тонкий медиаплеер с 8Гб памяти]
    13.      [25.05.2007 15:02] - [Sony Ericsson назначил нового главу российского представительства]
    14.      [24.05.2007 19:00] - [HD DVD и Blu-ray разрешат копировать?]
    15.      [24.05.2007 19:21] - [РТКомм.РУ может приостановить подключение школ к интернету в регионах]
    16.      [25.05.2007 15:02] - [Спам больше не беспокоит пользователей]
    17.      [23.05.2007 09:00] - [Обнаружен новый троянский вирус для мобильников]
    18.      [25.05.2007 13:44] - ["Аптека-Холдинг" ведет учет в ERA Financials]
    19.      [25.05.2007 14:20] - [PureDepth и Samsung показали самый большой в мире MLD-дисплей]
    20.      [24.05.2007 10:00] - [Канадские медики создали виртуальный организм человека]
    21. http://news.yandex.ru/security.rss
    22.      [24.05.2007 19:00] - [До 35% программ на ПК во всем мире контрафактные]
    23.      [23.05.2007 09:40] - [Symantec выпустит новый антивирус серии Norton для Windows Mobile]
    24.      [23.05.2007 09:20] - [В интернете появился баннер, предлагающий заразить компьютер вирусом]
    25.      [22.05.2007 23:15] - [Антивирус от компании Symantec "убил" тысячи компьютеров в Китае]
    26.      [23.05.2007 17:40] - [США: более 50% студентов-пиратов пострадали от вирусов]
    27.      [25.05.2007 04:00] - [В июне пройдет "Месяц уязвимостей поисковых систем"]
    28.      [23.05.2007 13:40] - ["Акибанк" укрепляет ИБ вместе с Eset NOD32]
    29.      [23.05.2007 13:20] - [Пользователи Office 2007 могли остаться без майских патчей Microsoft]
    30.      [23.05.2007 12:00] - [Ищем выход...: Кибер-войны глобальной политики]
    31.      [25.05.2007 11:20] - [Pусские хакеры развязали войну]
    32.      [24.05.2007 15:42] - [Тион-Про - новый российский одноплатный компьютер]
    33.      [25.05.2007 09:00] - [25 мая 2007 года на территории Департамента кадрового обеспечения МВД России и Следственного комитета при МВД России состоятся пожарно-тактические учения МВД России и МЧС ...]
    34.      [23.05.2007 14:00] - [Cenzic: топ-10 уязвимостей веб-приложений]
    35.      [23.05.2007 16:00] - [Новый российский антивирус]
    36.      [23.05.2007 13:40] - [Подростки стали реже скачивать пиратские материалы]
    37. http://news.yandex.ru/internet.rss
    38.      [23.05.2007 12:40] - [Google пожаловался на незнание своих пользователей]
    39.      [22.05.2007 17:15] - ["Русские фонды" купили Finance.ua]
    40.      [24.05.2007 16:40] - [Google удалит из своих баз неинтересных рекламодателей]
    41.      [24.05.2007 09:00] - [SearchInform теперь поддерживает Web-интерфейс]
    42.      [23.05.2007 19:40] - [Ученые рассказали о психологии баннерной рекламы]
    43.      [22.05.2007 18:15] - [В 25 странах мира интернет подвергается жесткой цензуре]
    44.      [24.05.2007 08:40] - [Stealth Computer LPC-450 - миниатюрная система на Core 2 Duo]
    45.      [22.05.2007 12:15] - [СУП приправили Яндексом и разбавили "Коммерсантом"]
    46.      [22.05.2007 14:00] - [Больше денег у Рунета - сильнее интерес законодателей]
    47.      [22.05.2007 14:30] - [Google News будет платить своим "источникам"?]
    48.      [24.05.2007 10:40] - [Google перестанет рекламировать рефераты]
    49.      [24.05.2007 11:20] - [Каждому владельцу сайта - собственный поиск!]
    50.      [23.05.2007 16:00] - [Barracuda превратил в "зомби" уже 15 тыс. ПК]
    51.      [23.05.2007 12:40] - [Google откроет университеты для рекламных агентств]
    52.      [25.05.2007 16:44] - [Рейтинг студентов может появиться на сайтах белорусских ВУЗов]
     
  10. ART79

    ART79 Активный пользователь

    С нами с:
    25 май 2007
    Сообщения:
    5
    Симпатии:
    0
    440Hz

    не работает.
    пишет что ошибка в этой строке $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

    Fatal error: Call to undefined function: socket_create() in .........

    я PHP: скопировал и вставил как есть.
     
  11. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Что же это за недохостенг?
     
  12. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    ART79, у тебя отключены сокеты.
     
  13. ART79

    ART79 Активный пользователь

    С нами с:
    25 май 2007
    Сообщения:
    5
    Симпатии:
    0
    так можно как-нибудь проблему по другому решить?
     
  14. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Можно на нормальный хостинг переехать.
     
  15. Ha Emmid

    Ha Emmid Активный пользователь

    С нами с:
    16 дек 2006
    Сообщения:
    17
    Симпатии:
    0
    Адрес:
    г. Санкт-Петербург
    Очень хороший код, спасибо)
     
  16. xkspy

    xkspy Активный пользователь

    С нами с:
    16 дек 2006
    Сообщения:
    45
    Симпатии:
    0
    440Hz, как в твоем коде сделать чтобы он выводил ссылку на новость?
     
  17. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    PHP:
    1.  
    2. <?
    3. print("\n    [".date('d.m.Y H:i',$DATE)."] - [<a href='$LINK' target='_blank'>$TITLE</a>]");
    4. ?>
    5.  
     
  18. Entrery

    Entrery Активный пользователь

    С нами с:
    19 июл 2007
    Сообщения:
    31
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3.  // выдирание RSS потоков
    4.  // 440hz
    5.  
    6.  ### TOOLS ###
    7.  
    8.  function GetXMLFirstVal($r,$t) {
    9.          if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    10.          return false;
    11.  }
    12.  
    13.  function GetXMLAllVal($r,$t) {
    14.          if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    15.          return array();
    16.  }
    17.  
    18.  function GetStream($URL,$mode=0) {
    19.  
    20.  
    21.      switch($mode) {
    22.  
    23.          // php
    24.          case 0:
    25.              $results = file_get_contents($URL);
    26.              break;
    27.  
    28.          // CURL
    29.          case 1:
    30.  
    31.              $ch = curl_init();
    32.              curl_setopt ($ch, CURLOPT_URL, $URL);            // Destination URL
    33.              curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);    // Output to a variable
    34.              curl_setopt ($ch, CURLOPT_POST, 0);                // Use HTTP POST
    35.              curl_setopt ($ch, CURLOPT_TIMEOUT, 20);            // Default Timeout
    36.  
    37.              $results = curl_exec($ch);
    38.              if(curl_error($ch)) {
    39.                  print_r(curl_getinfo($ch));
    40.                  exit();
    41.              }
    42.  
    43.              break;
    44.  
    45.          // SOCKETS
    46.          case 2:
    47.  
    48.              $info = parse_url($URL);
    49.  
    50.              $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    51.              if ($socket < 0) {
    52.                  echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
    53.                  exit();
    54.              }
    55.              $result = socket_connect($socket, $info['host'], 80);
    56.              if ($result < 0) {
    57.                  echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
    58.              }
    59.  
    60.              $in  = "GET ".$info['path']." HTTP/1.1\r\n";
    61.              $in .= "Host: ".$info['host']."\r\n";
    62.              $in .= "Connection: Close\r\n\r\n";
    63.  
    64.              socket_write($socket, $in, strlen($in));
    65.  
    66.              $out = '';
    67.              $results = '';
    68.  
    69.              while ($out = socket_read($socket, 2048)) {
    70.                  $results .= $out;
    71.              }
    72.  
    73.              socket_close($socket);
    74.  
    75.              break;
    76.  
    77.          default:
    78.              $results = '';
    79.      }
    80.      return $results;
    81.  }
    82.  
    83.  ### TOOLS ###
    84.  
    85.  // RSS потоки
    86.  // ТОЛЬКО ссылки БЕЗ параметров!
    87.  // get.rss?a=b непокатит. тогда нужно юзать CURL
    88.  
    89.  $RSSS = array();
    90.  $RSSS[] = 'http://tarmans.kombats.ru/?module=news&cmd=rss';
    91.  
    92.  
    93.  // перебираем потоки
    94.  foreach($RSSS AS $RSS) {
    95.  
    96.      //print("\n$RSS");
    97.  
    98.      // получаем контент
    99.      // 0 - php
    100.      // 1- curl
    101.      // 2- sock
    102.      $XML = GetStream($RSS,0);
    103.  
    104.      if($XML) {
    105.  
    106.          // получаеми список всех ITEM
    107.          $ITEMS = GetXMLAllVal($XML,'item');
    108.             $g=0;
    109.          // перебираем ITEM
    110.          foreach($ITEMS AS $ITEM) {
    111.               $g++;
    112.              // получаем данные
    113.              $TITLE = GetXMLFirstVal($ITEM,'title');
    114.              $LINK  = GetXMLFirstVal($ITEM,'link');
    115.              $DESC  = GetXMLFirstVal($ITEM,'description');
    116.              $DATE  = GetXMLFirstVal($ITEM,'pubDate');
    117.              $CAT  = GetXMLFirstVal($ITEM,'category');
    118.  
    119.              // ver 2.0
    120.              if(!$DATE) {
    121.                  $DATE = GetXMLFirstVal($ITEM,'dc:date');
    122.              }
    123.  
    124.              // конвертим дату в unixtime
    125.              if($DATE) $DATE = strtotime($DATE);
    126.              else      $DATE = time();
    127.  
    128.              // преобразуем спецсимволы
    129.              $TITLE = html_entity_decode($TITLE,ENT_QUOTES);
    130.              $DESC  = html_entity_decode($DESC,ENT_QUOTES);
    131.              $CAT  = html_entity_decode($CAT,ENT_QUOTES);
    132.  
    133.              print("\n<ul> <a href = '$LINK' target=_blank > $TITLE </a> ");
    134.              $DESC=strip_tags($DESC);
    135.               $sl = strlen($DESC);
    136.               if($sl>157){
    137.                 $DESC = str_split($DESC,156);
    138.                 $DESC = trim($DESC[0]);
    139.                               }
    140.  
    141.                $DESC= str_replace("<![CDATA[","",$DESC);
    142.                $DESC= str_replace("]]>","",$DESC);
    143.                echo "<li><i>".$DESC."...</i></li>";
    144.  
    145.              echo "<br>";
    146.               echo "</ul>";
    147.               if ($g==5){break;}
    148.          }
    149.  
    150.      }
    151.  }
    152.  
    153.  // что б в шелле строку переводило ...
    154.  print("\n");
    155.  
    156.  ?>
    Я его чуть поменял ... но у меня проблема с кодировкой. Я ставлю include этой функций на другой странице, когда смотрю ту страницу у меня иероглифы
    Что надо переделать чтоб избежать вот такой проблемы ? Кстати на странице где я делаю инклуд
     
  19. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    это UTF8
     
  20. Entrery

    Entrery Активный пользователь

    С нами с:
    19 июл 2007
    Сообщения:
    31
    Симпатии:
    0
    Все нормально. Пасиб

    Может кому-то понадобиться я передлал его чуток.
    Можно ставить сколько новостей хотим. На сайте делаем инклуд этого файла а потом
    PHP:
    1. echo DisplayRss("http://www.darkclan.ru/news/?action=rss", 5);
    где вместо 5 ставим цифру зависимо от сколько новостей нам надо


    PHP:
    1.  
    2. <?php
    3.  
    4.  // выдирание RSS потоков
    5.  // 440hz
    6.  
    7.  ### TOOLS ###
    8.  
    9.  function GetXMLFirstVal($r,$t) {
    10.          if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    11.          return false;
    12.  }
    13.  
    14.  function GetXMLAllVal($r,$t) {
    15.          if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    16.          return array();
    17.  }
    18.  
    19.  function GetStream($URL,$mode=0) {
    20.  
    21.  
    22.      switch($mode) {
    23.  
    24.          // php
    25.          case 0:
    26.              $results = file_get_contents($URL);
    27.              break;
    28.  
    29.          // CURL
    30.          case 1:
    31.  
    32.              $ch = curl_init();
    33.              curl_setopt ($ch, CURLOPT_URL, $URL);            // Destination URL
    34.              curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);    // Output to a variable
    35.              curl_setopt ($ch, CURLOPT_POST, 0);                // Use HTTP POST
    36.              curl_setopt ($ch, CURLOPT_TIMEOUT, 20);            // Default Timeout
    37.  
    38.              $results = curl_exec($ch);
    39.              if(curl_error($ch)) {
    40.                  print_r(curl_getinfo($ch));
    41.                  exit();
    42.              }
    43.  
    44.              break;
    45.  
    46.          // SOCKETS
    47.          case 2:
    48.  
    49.              $info = parse_url($URL);
    50.  
    51.              $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    52.              if ($socket < 0) {
    53.                  echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
    54.                  exit();
    55.              }
    56.              $result = socket_connect($socket, $info['host'], 80);
    57.              if ($result < 0) {
    58.                  echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
    59.              }
    60.  
    61.              $in  = "GET ".$info['path']." HTTP/1.1\r\n";
    62.              $in .= "Host: ".$info['host']."\r\n";
    63.              $in .= "Connection: Close\r\n\r\n";
    64.  
    65.              socket_write($socket, $in, strlen($in));
    66.  
    67.              $out = '';
    68.              $results = '';
    69.  
    70.              while ($out = socket_read($socket, 2048)) {
    71.                  $results .= $out;
    72.              }
    73.  
    74.              socket_close($socket);
    75.  
    76.              break;
    77.  
    78.          default:
    79.              $results = '';
    80.      }
    81.      return $results;
    82.  }
    83.  
    84.  ### TOOLS ###
    85.  
    86.  // RSS потоки
    87.  // ТОЛЬКО ссылки БЕЗ параметров!
    88.  // get.rss?a=b непокатит. тогда нужно юзать CURL
    89.  /*
    90.  $RSSS = array();
    91.  $RSSS[] = 'http://tarmans.kombats.ru/?module=news&cmd=rss';
    92.  $RSSS[] = 'http://www.paladins.ru/rss.php';
    93.    */
    94.  function DisplayRss($RSS,$j)
    95.   // перебираем потоки
    96.  {
    97.  
    98.      //print("\n$RSS");
    99.  
    100.      // получаем контент
    101.      // 0 - php
    102.      // 1- curl
    103.      // 2- sock
    104.      $XML = GetStream($RSS,0);
    105.  
    106.      if($XML) {
    107.  
    108.          // получаеми список всех ITEM
    109.          $ITEMS = GetXMLAllVal($XML,'item');
    110.             $g=0;
    111.          // перебираем ITEM
    112.          foreach($ITEMS AS $ITEM) {
    113.               $g++;
    114.              // получаем данные
    115.              $TITLE = GetXMLFirstVal($ITEM,'title');
    116.              $LINK  = GetXMLFirstVal($ITEM,'link');
    117.              $DESC  = GetXMLFirstVal($ITEM,'description');
    118.              $DATE  = GetXMLFirstVal($ITEM,'pubDate');
    119.              $CAT  = GetXMLFirstVal($ITEM,'category');
    120.  
    121.              // ver 2.0
    122.              if(!$DATE) {
    123.                  $DATE = GetXMLFirstVal($ITEM,'dc:date');
    124.              }
    125.  
    126.              // конвертим дату в unixtime
    127.              if($DATE) $DATE = strtotime($DATE);
    128.              else      $DATE = time();
    129.  
    130.              // преобразуем спецсимволы
    131.              $TITLE = html_entity_decode($TITLE,ENT_QUOTES);
    132.              $DESC  = html_entity_decode($DESC,ENT_QUOTES);
    133.              $CAT  = html_entity_decode($CAT,ENT_QUOTES);
    134.  
    135.              print("\n<ul> <a href = '$LINK' target=_blank > $TITLE </a> ");
    136.              $DESC=strip_tags($DESC);
    137.               $sl = strlen($DESC);
    138.               if($sl>157){
    139.                 $DESC = str_split($DESC,156);
    140.                 $DESC = trim($DESC[0]);
    141.                               }
    142.  
    143.                $DESC= str_replace("<![CDATA[","",$DESC);
    144.                $DESC= str_replace("]]>","",$DESC);
    145.                echo "<li><i>".$DESC."...</i></li>";
    146.  
    147.              echo "<br>";
    148.               echo "</ul>";
    149.               if ($g==$j){break;}
    150.          }
    151.  
    152.      }
    153.  }
    154.  
    155.  // что б в шелле строку переводило ...
    156.  print("\n");
    157.  
    158.  ?>
    З.Ы. Сорри за мой албанский
     
  21. Riv

    Riv Активный пользователь

    С нами с:
    18 сен 2007
    Сообщения:
    6
    Симпатии:
    0
    Знающие люди, помогите новичку плс =)

    использую:
    PHP:
    1. <?
    2.     require("./rss.php");
    3.     $rssurl = "http://feeds.feedburner.com/domainblogru?format=xml";
    4.     $cRss = new rss($rssurl);
    5. ?>
    6.  
    7. <?
    8.     $i = 0;
    9.     foreach($cRss->GetArrayItem() as $item) {
    10.         if($i<7){
    11.  
    12.         echo "<tr><td class=\"data\" align=\"left\" colspan=\"2\">".$item['pubdate']."</td></tr>";
    13.         echo "<tr><td class=\"text\" align=\"left\" colspan=\"2\">".$item['title']."</td></tr>";
    14.         echo "<tr><td class=\"readmore\" align=\"left\" colspan=\"2\"><a href=\"".$item['link']."\">&gt;&gt;&gt; читать дальше</a></td>";
    15.         echo "<tr><td align=\"left\" colspan=\"2\">&nbsp;</td></tr>";
    16.         }
    17.         $i++;
    18.     }
    19. ?>
    и

    PHP:
    1. <?
    2. class rss{
    3.     var $sUrl;
    4.     var $sBuff;
    5.     var $rXml_parser;
    6.     var $aParentField;
    7.     var $aCurrrentField;
    8.     var $aCurrentNamespace;
    9.     var $aRss;
    10.     var $aItems;
    11.     var $aChannel;
    12.  
    13.     function rss($url=""){
    14.         if(!isset($url) || empty($url)){
    15.             echo "no RSS url";
    16.             exit();
    17.         }
    18.  
    19.         $this->aChannel = array();
    20.         $this->aItems = array();
    21.         $this->aRss = array($this->aChannel, $this->aItems);
    22.         $this->aParentField = array();
    23.         $this->xml_parser = undef;
    24.         $this->sUrl = strval($url);
    25.  
    26.         $this->GetUrl();
    27.  
    28.         $this->ParseRss();
    29.     }
    30.  
    31.     function GetUrl(){
    32.         $this->sBuff = join ("", file($this->sUrl));
    33.     }
    34.  
    35.     function ParseRss(){
    36.         $this->rXml_parser = xml_parser_create();
    37.         xml_set_object($this->rXml_parser, &$this);
    38.         xml_set_element_handler($this->rXml_parser, "starttag", "endtag");
    39.         xml_set_character_data_handler($this->rXml_parser, "cdata");
    40.         if (!xml_parse($this->rXml_parser, $this->sBuff)) {
    41.             die(sprintf("XML error: %s at line %d",
    42.                 xml_error_string(xml_get_error_code($this->rXml_parser)),
    43.                 xml_get_current_line_number($this->rXml_parser))
    44.             );
    45.         }
    46.         xml_parser_free($this->rXml_parser);
    47.         $this->aRss = array("channel" => $this->aChannel, "items" => $this->aItems);
    48.     }
    49.  
    50.     function GetArrayRss(){
    51.             return $this->aRss;
    52.     }
    53.  
    54.     function GetChannelVal($sVal){
    55.             return $this->aChannel[$sVal];
    56.     }
    57.  
    58.     function GetArrayChannel(){
    59.             return $this->aChannel;
    60.     }
    61.  
    62.     function GetArrayItem(){
    63.             return $this->aItems;
    64.     }
    65.  
    66.     function starttag($rXml_parser, $tag, $attributes){
    67.         $tag        = strtolower( $tag );
    68.         $namespace      = false;
    69.         if ( strpos( $tag, ':' ) ) {
    70.             list($namespace, $tag) = split( ':', $tag, 2);
    71.         }
    72.         $this->aCurrrentField = $tag;
    73.         if ( $namespace and $namespace != 'rdf' ) {
    74.             $this->aCurrentNamespace = $namespace;
    75.         }
    76.         if ( $tag == 'channel' ) {
    77.             array_unshift( $this->aParentField, 'channel' );
    78.         }elseif ( $tag == 'items' ) {
    79.             array_unshift( $this->aParentField, 'items' );
    80.         }elseif ( $tag == 'item' ){
    81.             array_unshift( $this->aParentField, 'item' );
    82.         }elseif ( $tag == 'cdatainput' ) {
    83.             array_unshift( $this->aParentField, 'cdatainput' );
    84.         }elseif ( $tag == 'image' ) {
    85.             array_unshift( $this->aParentField, 'image' );
    86.         }
    87.     }
    88.  
    89.     function endtag($rXml_parser, $tag){
    90.         $tag = strtolower($tag);
    91.         if ( $tag == 'item' ) {
    92.             $this->aItems[] = $this->current_item;
    93.             $this->current_item = array();
    94.             array_shift( $this->aParentField );
    95.         }elseif ( $tag == 'channel' or $tag == 'items' or $tag == 'cdatainput' or $tag == 'image' ) {
    96.             array_shift( $this->aParentField );
    97.         }
    98.         $this->aCurrrentField = '';
    99.         $this->aCurrentNamespace = false;
    100.     }
    101.  
    102.     function cdata($rXml_parser, $cdata){
    103.         if ( $this->aParentField[0] == $this->aCurrrentField || !$this->aCurrrentField ){
    104.             return;
    105.         }elseif ( $this->aParentField[0] == 'channel') {
    106.             if ( $this->aCurrentNamespace ) {
    107.                 $this->aChannel[ $this->aCurrentNamespace ][ $this->aCurrrentField ] .= $cdata;
    108.             }else{
    109.                 $this->aChannel[ $this->aCurrrentField ] .= $cdata;
    110.             }
    111.         }elseif ( $this->aParentField[0] == 'item' ){
    112.             if ( $this->aCurrentNamespace ) {
    113.                 $this->current_item[ $this->aCurrentNamespace ][ $this->aCurrrentField ] .= $cdata;
    114.             }else{
    115.                 $this->current_item[ $this->aCurrrentField ] .= $cdata;
    116.             }
    117.         }elseif ( $this->aParentField[0] == 'cdatainput' ) {
    118.             if ( $this->aCurrentNamespace ) {
    119.                 $this->cdatainput[ $this->aCurrentNamespace ][ $this->aCurrrentField ] .= $cdata;
    120.             }else{
    121.                 $this->cdatainput[ $this->aCurrrentField ] .= $cdata;
    122.             }
    123.         }elseif ( $this->aParentField[0] == 'image' ) {
    124.             if ( $this->aCurrentNamespace ) {
    125.                 $this->image[ $this->aCurrentNamespace ][ $this->aCurrrentField ] .= $cdata;
    126.             }else{
    127.                 $this->image[ $this->aCurrrentField ] .= $cdata;
    128.             }
    129.         }
    130.     }
    131. }
    132. ?>
    133.  
    на одной странице выдает новости нормально, на второй:

    что с этим делать? =( Помогите начинающему разобраться =)

    PS при изменении charset на UTF-8 эта колонка становиться нормально видна, а остальная страничка в квадратиках..
     
  22. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    пееркодироват надо из utf8 в cp1251

    iconv() смотри

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?>

    надо поймать эту коди ровку и конвертировать все в cp1251
     
  23. Riv

    Riv Активный пользователь

    С нами с:
    18 сен 2007
    Сообщения:
    6
    Симпатии:
    0
    а можно чуть подробнее что куда дописывать? :oops: соль в том, что вышеизложенные скрипты не мои, а к автору сейчас достучаться нельзя :oops:
     
  24. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ты только из э того места импортишь?
    или еще есть потоки?
     
  25. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    PHP:
    1.  
    2. foreach($cRss->GetArrayItem() as $item) {
    3.          if($i<7){
    4.  
    5.          $item['title'] = iconv('UTF-8','CP1251',$item['title']);
    6.  
    7.          [skip]
    8.  
    9.