За последние 24 часа нас посетил 20441 программист и 1125 роботов. Сейчас ищут 732 программиста ...

RSS - как читать и парсить

Тема в разделе "Регулярные выражения", создана пользователем NIKO, 19 сен 2006.

  1. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Как выпускать RSS новости и читать их?
     
  2. Денч

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

    С нами с:
    4 фев 2006
    Сообщения:
    59
    Симпатии:
    0
    Адрес:
    Russia Samara
    RSS - это простой XML-документ.
    Вот здесь почитай http://ru.wikipedia.org/wiki/RSS, а там по ссылкам.
    Все просто и доступно описано
     
  3. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
  4. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Допустим у меня такой

    rssnews.xml
    Код (Text):
    1. <?xml version="1.0"?>
    2. <rss version="2.0">
    3.   <channel>
    4.     <title>Liftoff News</title>
    5.     <link>http://liftoff.msfc.nasa.gov/</link>
    6.     <description>Liftoff to Space Exploration.</description>
    7.     <language>en-us</language>
    8.     <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>
    9.    
    10.     <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
    11.     <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    12.     <generator>Weblog Editor 2.0</generator>
    13.     <managingEditor>editor@example.com</managingEditor>
    14.     <webMaster>webmaster@example.com</webMaster>
    15.    
    16.     <item>
    17.       <title>Star City</title>
    18.       <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
    19.       <description>How do Americans get ready to work with Russians aboard the
    20.         International Space Station? They take a crash course in culture, language
    21.         and protocol at Russia's Star City.</description>
    22.       <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
    23.       <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>
    24.     </item>
    25.    
    26.     <item>
    27.       <title>Space Exploration</title>
    28.       <link>http://liftoff.msfc.nasa.gov/</link>
    29.       <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada
    30.         will experience a partial eclipse of the Sun on Saturday, May 31st.</description>
    31.       <pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate>
    32.       <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>
    33.     </item>
    34.    
    35.     <item>
    36.       <title>The Engine That Does More</title>
    37.       <link>http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp</link>
    38.       <description>Before man travels to Mars, NASA hopes to design new engines
    39.         that will let us fly through the Solar System more quickly.  The proposed
    40.         VASIMR engine would do that.</description>
    41.       <pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate>
    42.       <guid>http://liftoff.msfc.nasa.gov/2003/05/27.html#item571</guid>
    43.     </item>
    44.    
    45.     <item>
    46.       <title>Astronauts' Dirty Laundry</title>
    47.       <link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>
    48.       <description>Compared to earlier spacecraft, the International Space
    49.         Station has many luxuries, but laundry facilities are not one of them.
    50.         Instead, astronauts have other options.</description>
    51.       <pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
    52.       <guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
    53.     </item>
    54.   </channel>
    55. </rss>

    как мне получить это все в норм. виде в ПХП файле?
     
  5. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    И еще как добовлять новости?
     
  6. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Откуда-то получил код и исправил на
    PHP:
    1. <?php
    2.  
    3. (isset($_GET['smskopilka']))?$smskopilka=$_GET['smskopilka']:$smskopilka=NULL;
    4. (isset($_GET['count']))?$countStr=$_GET['count']:$countStr=10;
    5.  
    6.  
    7. $smskopilka = 13207;
    8.  
    9.  
    10. $countStr = "10";
    11.  
    12. $file = "rssnews.xml";
    13. $pos = 0;
    14. $Nodes = array();
    15.  
    16. if (!($fp = fopen("$file", "r"))) {
    17.    die("Не удается открыть XML файл - ".$file.", может его нет? Или не верно указан номер sms.копилки.");
    18. }
    19. while ($getline = fread($fp, 4096)) {
    20.   $data = $data . $getline;
    21. }
    22. $count = 0;
    23. $pos = 0;
    24. while ($node = GetElementByName($data, "<item", "</item>")) {
    25.    $Nodes[$count] = $node;
    26.    $count++;
    27. }
    28.  
    29. if($countStr > $count) $countStr=$count;
    30. for ($i=0; $i<$countStr; $i++) {
    31. $title = GetElementByName($Nodes[$i], "<title>", "</title>");
    32. $link = GetElementByName($Nodes[$i], "<link>", "</link>");
    33. $text = GetElementByName($Nodes[$i], "<description>", "</description>");
    34. $time = GetElementByName($Nodes[$i], "<pubDate>", "</pubDate>");
    35. echo "<a href=\"$link\" title=\"$title\" >".$title."</a><br /><sup>".$time."</sup><br />".$text."<br/>";
    36.  
    37. }
    38.  
    39.  
    40. //---------------------------------
    41. function GetElementByName ($xml, $start, $end) {
    42.  
    43.    global $pos;
    44.    $startpos = strpos($xml, $start);
    45.    if ($startpos === false) {
    46.        return false;
    47.    }
    48.    $endpos = strpos($xml, $end);
    49.    $endpos = $endpos+strlen($end);  
    50.    $pos = $endpos;
    51.    $endpos = $endpos-$startpos;
    52.    $endpos = $endpos - strlen($end);
    53.    $tag = substr ($xml, $startpos, $endpos);
    54.    $tag = substr ($tag, strlen($start));
    55.  
    56.    return $tag;
    57. }
    58.  
    59.  
    60.  
    61. ?>
    62.  

    но

    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 39 bytes) in /home/niko/public_html/index.php on line 53

    помогите что то сделать
     
  7. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    NIKO
    Скрирт привысил расход допустимой памяти :)
     
  8. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    NIKO
    вот так делаются новости на php.ru. это то, что показывается на первой странице. по cron раз в час запуск.

    таблица RSS потоков
    Код (Text):
    1.  
    2. mysql> show fields from rss;
    3. +-------+------------------+------+-----+---------+-------+
    4. | Field | Type             | Null | Key | Default | Extra |
    5. +-------+------------------+------+-----+---------+-------+
    6. | ID    | varchar(16)      |      |     |         |       |
    7. | SITE  | varchar(255)     |      |     |         |       |
    8. | RSS   | varchar(255)     |      |     |         |       |
    9. | DATE  | int(11) unsigned |      |     | 0       |       |
    10. +-------+------------------+------+-----+---------+-------+
    11. 4 rows in set (0.05 sec)
    12.  
    13. mysql> select * from rss;
    14. +------------------+------------------+--------------------------------------------+------------+
    15. | ID               | SITE             | RSS                                        | DATE       |
    16. +------------------+------------------+--------------------------------------------+------------+
    17. | hz3oduq5ywnzdstx | PHP.NET          | http://www.php.net/news.rss                | 1157641044 |
    18. | se9mlg5i6eig33aa | INTERNET.RU      | http://internet.ru/rss2.php                | 1157645184 |
    19. | j1hj90ffmcb0oahr | KM.RU            | http://www.km.ru/news/rss.asp?code=ok      | 1157700453 |
    20. | np9ch2q88dw2nq0x | SEARCHENGINES.RU | http://www.searchengines.ru/news/index.xml | 1157702290 |
    21. | g8kjub6pgdcaz8el | WEBMASCON.COM    | http://webmascon.com/daily/rss.php         | 1157709021 |
    22. | lm0yurjtdi8ax1kp | PHPINSIDE.RU     | http://phpinside.ru/rss.xml                | 1157709086 |
    23. +------------------+------------------+--------------------------------------------+------------+
    собствено сам парсер:

    PHP:
    1. <?
    2.  
    3. // expi-web (c) 2006
    4. // powered by 440hz
    5.  
    6. include('../oops/start.inc');
    7.  
    8. //ob_start();
    9.  
    10. $MAILTO = '';
    11.  
    12. $RSSS = $OOPSGlobal['SES']->db->QueryObjects('SELECT * FROM rss ORDER BY DATE');
    13. foreach($RSSS AS $RSS) {
    14.  
    15.     print("\n\n".$RSS->RSS.' processing ...');
    16.  
    17.     $XML = @file_get_contents($RSS->RSS);
    18.  
    19.     if(!$XML) continue;
    20.  
    21.  
    22.     $ICONV = "UTF-8";
    23.     if(stristr($XML,'encoding="windows-1251"')) {
    24.         $ICONV = 'CP1251';
    25.     }
    26.     print("\nEncoding from $ICONV");
    27.  
    28.     print("\nRecive ".strlen($XML)." byte(s). Parsing ...");
    29.  
    30.     $ITEMS = GetXMLAllVal($XML,'item');
    31.  
    32.     print("\nItems: [".count($ITEMS)."]");
    33.     foreach($ITEMS AS $ITEM) {
    34.  
    35.         $TITLE = GetXMLFirstVal($ITEM,'title');
    36.         $LINK = GetXMLFirstVal($ITEM,'link');
    37.         $DESC = GetXMLFirstVal($ITEM,'description');
    38.         $DATE = GetXMLFirstVal($ITEM,'pubDate');
    39.         $CAT  = GetXMLFirstVal($ITEM,'category');
    40.  
    41.         if(!$DATE) {
    42.             $DATE = GetXMLFirstVal($ITEM,'dc:date');
    43.         }
    44.  
    45.         if($DATE)
    46.             $DATE = strtotime($DATE);
    47.         else
    48.             $DATE = time();
    49.  
    50.         $MD5 = md5($TITLE.$LINK.$DESC);
    51.  
    52.         $TITLE = html_entity_decode($TITLE,ENT_QUOTES);
    53.         $DESC  = html_entity_decode($DESC,ENT_QUOTES);
    54.         $CAT   = html_entity_decode($CAT,ENT_QUOTES);
    55.  
    56.         if($ICONV != 'UTF-8') {
    57.             $TITLE = iconv($ICONV,'UTF-8',$TITLE);
    58.             $DESC  = iconv($ICONV,'UTF-8',$DESC);
    59.             $CAT   = iconv($ICONV,'UTF-8',$CAT);
    60.         }
    61.  
    62.         print("\n".date('d.m.Y H:i',$DATE)." - [".iconv('UTF-8','CP1251',$CAT)."] ".iconv('UTF-8','CP1251',$TITLE));
    63.  
    64.         $DESC = trim(strip_tags($DESC));
    65.  
    66.         $OLDRSS = $OOPSGlobal['SES']->db->QueryObjects("SELECT * FROM rss_news WHERE TITLE = '".mysql_escape_string($TITLE)."'");
    67.  
    68.         if(count($OLDRSS) > 0) {
    69.                 $OOPSGlobal['SES']->db->Query("DELETE FROM rss_news WHERE TITLE = '".mysql_escape_string($TITLE)."'");
    70. //              print("\nDeleting ...");
    71.         } else {
    72.                 $MAILTO .= "\n".date('d.m.Y H:i',$DATE)." - ".$RSS->SITE.': '.$TITLE."\n\n".trim(strip_tags($DESC))."\n".$LINK."\n\n";
    73.                 print("\nMailing ...");
    74.         }
    75.  
    76.         $SQL = "INSERT INTO rss_news (TITLE,WHO,LINK,`DESC`,DATE,MD5) VALUES('".
    77. mysql_escape_string($TITLE)."','".mysql_escape_string($RSS->SITE)."','".mysql_escape_string($LINK)."','".mysql_escape_string($DESC)."',".$DATE.",'$MD5')";
    78.         $OOPSGlobal['SES']->db->Query($SQL);
    79. //      print("\nInserting ...");
    80.  
    81.     }
    82.  
    83. }
    84.  
    85. print "\n";
    86.  
    87. if($MAILTO) {
    88.  
    89.     print "\nMailing ...";
    90. //  OOPSMailer('PHP.RU: Новости от '.date('d.m.Y H:i'),$MAILTO,'talk@expi-web.ru',"PHP.RU News <news@php.ru>");
    91.     OOPSMailer('PHP.RU: Новости от '.date('d.m.Y H:i'),$MAILTO,'440hz@php.ru',"PHP.RU News <news@php.ru>");
    92.  
    93.     print "\n\n";
    94.  
    95. }
    96.  
    97.  
    98. include('../oops/stop.inc');
    99.  
    100. ?>
    тулза:

    PHP:
    1. <?
    2.  
    3. function GetXMLFirstVal($r,$t) {
    4.         if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    5.         return '';
    6. }
    7.  
    8. function GetXMLAllVal($r,$t) {
    9.         if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    10.         return array();
    11. }
    12.  
    13. ?>
    и вот ч то имеем:

    Код (Text):
    1.  
    2. gw(root):/usr/www/wwwroot/search.php.ru/bin#>php rssparser.php
    3.  
    4.  
    5. http://www.php.net/news.rss processing ...
    6. Encoding from UTF-8
    7. Recive 16061 byte(s). Parsing ...
    8. Items: [19]
    9. 13.09.2006 00:00 - [] Zend / PHP Conference & Expo 2006
    10. 10.09.2006 00:00 - [] International PHP Conference 2006
    11. 06.09.2006 00:00 - [] 2006 DC PHP Conference - Speakers and schedule
    12. 24.08.2006 00:00 - [] PHP 5.1.6 Released
    13. 24.08.2006 00:00 - [] Mastering Regular Expressions - now with PHP coverage
    14. 17.08.2006 00:00 - [] PHP 4.4.4 and PHP 5.1.5 Released
    15. 03.08.2006 00:00 - [] PHP 4.4.3 Released
    16. 29.12.2005 00:00 - [] php/db|works 2006 Schedule Now Online
    17. 26.05.2006 00:00 - [] Welcome Summer of Code 2006 Students
    18. 17.05.2006 00:00 - [] Call to speaker for Paris "Forum PHP 2006"
    19. 16.05.2006 00:00 - [] NYPHPCon 2006 Program Announced
    20. 04.05.2006 00:00 - [] PHP 5.1.4 Released
    21. 01.05.2006 00:00 - [] PHP 5.1.3 Released
    22. 01.05.2006 00:00 - [] Summer of Code
    23. 24.04.2006 00:00 - [] PHP Vikinger
    24. 02.03.2006 00:00 - [] php|tek 2006
    25. 26.02.2006 00:00 - [] PHP Quebec 2006
    26. 02.02.2006 00:00 - [] NYPHPCon 2006
    27. 31.12.1969 00:00 - []
    28.  
    29. http://internet.ru/rss2.php processing ...
    30. Encoding from UTF-8
    31. Recive 20631 byte(s). Parsing ...
    32. Items: [20]
    33. 20.09.2006 10:13 - [] Daripodarki.ru нашел удачливого покупателя
    34. Mailing ...
    35. 20.09.2006 00:42 - [] Поиск: Как навести порядок в Интернете
    36. Mailing ...
    37. 19.09.2006 19:10 - [] ImageOX - простая работа с коллекциями онлайн-изображений
    38. Mailing ...
    39. 19.09.2006 16:28 - [] Бельгийские газеты победили Google
    40. 19.09.2006 15:04 - [] TDK продемонстрировала свой flash-диск
    41. 19.09.2006 14:49 - [] R01: нам интересен розничный рынок
    42. 19.09.2006 14:26 - [] SanDisk и RealNetworks пытаются повторить успех пары iPod+iTunes
    43. 19.09.2006 14:02 - [] Ноутбук на базе Xbox360?
    44. 19.09.2006 13:14 - [] Az.to - информационный агрегатор для ежедневного посещения
    45. 19.09.2006 01:27 - [] В сети появился новый сайт бизнес-идей
    46. 18.09.2006 19:27 - [] Борцы со спамом получили крупный штраф
    47. 18.09.2006 17:26 - [] В США накрыли четыре группы спаммеров
    48. 18.09.2006 16:19 - [] Spbnews представила профсоюзный проект 2 в 1
    49. 18.09.2006 15:37 - [] Спортивное сумасшествие вместе со SportsLister.com
    50. 18.09.2006 15:24 - [] Nintendo Wii увидит свет 19 ноября
    51. 18.09.2006 14:20 - [] Легальная электронная книга, новый поиск, суд над посетителем...
    52. 18.09.2006 13:23 - [] В Марокко посадили пару вирусописателей
    53. 18.09.2006 13:05 - [] Sony готовится представить собственный вариант HD-рекордера
    54. 18.09.2006 11:29 - [] Notecentric: заметки не для всех
    55. 15.09.2006 17:30 - [] Понравился сайт? - "Дай пять"!
    56.  
    57. http://www.km.ru/news/rss.asp?code=ok processing ...
    58. Encoding from UTF-8
    59. Recive 9695 byte(s). Parsing ...
    60. Items: [10]
    61. 20.09.2006 11:00 - [Новости] Visiontek X1950XTX уже доступен сегодня
    62. Mailing ...
    63. 20.09.2006 10:50 - [Новости] Сотрудники ИТ-сферы любят стиль «потяжелее»
    64. Mailing ...
    65. 20.09.2006 10:40 - [Новости] Merom подешевеет в октябре
    66. Mailing ...
    67. 20.09.2006 10:20 - [Новости] МТС готовится к экспериментам
    68. Mailing ...
    69. 20.09.2006 10:00 - [Новости] Toshiba объявила о своей ошибке
    70. Mailing ...
    71. 19.09.2006 16:40 - [Новости] Microsoft отсудила у спамера самый крупный штраф
    72. 19.09.2006 15:27 - [Новости] Почему Apple так сильно завышает цены на свои плееры?
    73. 19.09.2006 14:40 - [Новости] Sony PlayStation Portable может быть захвачена хакерами
    74. 19.09.2006 14:20 - [Новости] GeForce Go 7700 Powers ASUS A8Js создан для серьезных задач
    75. 19.09.2006 14:00 - [Новости] VIA C7-D процессор без кремния?
    76.  
    77. http://www.searchengines.ru/news/index.xml processing ...
    78. Encoding from CP1251
    79. Recive 30437 byte(s). Parsing ...
    80. Items: [15]
    81. 15.09.2006 10:57 - [] Yahoo! анонсировала обновлённый почтовый сервис
    82. 14.09.2006 11:31 - [] Yahoo! и Acer заключили многолетнее партнёрское соглашение
    83. 12.09.2006 11:52 - [] Miva добавила новый рекламный продукт
    84. 11.09.2006 15:41 - [] Вебальта запустила собственную систему контекстной рекламы
    85. 07.09.2006 09:54 - [] Google News запустила сервис поиска по архивам
    86. 06.09.2006 13:59 - [] Accipiter Solutions приобрела рекламную сеть BidClix
    87. 04.09.2006 14:49 - [] Правительство Бразилии даёт Google две недели на проверку пользовательских данных
    88. 01.09.2006 12:26 - [] Яндекс начинает программу по созданию электронной справочной библиотеки
    89. 31.08.2006 11:52 - [] Yahoo! Go for Mobile стала доступна для пользователей мобильных устройствах с ОС Windows
    90. 30.08.2006 11:40 - [] Yahoo! обновила свой портал по недвижимости, добавив новые инструменты и сервисы
    91. 29.08.2006 11:41 - [] Google и eBay соединяют пользователей, рекламодателей и продавцов во всём мире
    92. 22.08.2006 10:54 - [] Mail.ru запустила новый поисковый сервис - Ответы@Mail.Ru
    93. 19.08.2006 01:37 - [] В ноябре 2006 года в Москве пройдёт V ежегодная конференция
    94. 17.08.2006 10:46 - [] Yahoo! расширяет поисковую рекламу в мобильной сфере
    95. 16.08.2006 11:30 - [] Google анонсировала купоны на скидки на Google Maps
    96.  
    97. http://webmascon.com/daily/rss.php processing ...
    98. Encoding from CP1251
    99. Recive 5023 byte(s). Parsing ...
    100. Items: [5]
    101. 28.08.2006 20:54 - [] Российская конференция веб-разработчиков
    102. 19.08.2006 13:43 - [] Всесоюзная перепись веб-студий
    103. 01.08.2006 22:14 - [] Ruby on Rails — российский сайт
    104. 02.05.2006 18:34 - [] Немного о славянском восприятии XHTML
    105. 01.05.2006 14:40 - [] webmascon.RU
    106.  
    107. http://phpinside.ru/rss.xml processing ...
    108. Encoding from UTF-8
    109. Recive 9956 byte(s). Parsing ...
    110. Items: [10]
    111. 15.09.2006 14:20 - [] C 2007 года в PEAR будут приниматься только пакеты для PHP 5
    112. 15.09.2006 12:02 - [] Состоялся релиз Subversion 1.4
    113. 12.09.2006 13:38 - [Обзоры] IE7.com агитирует за Firefox
    114. 12.09.2006 12:48 - [Обзоры] Сравнение программ для защиты кода
    115. 07.09.2006 00:07 - [Почитать] "Книга алгоритмов" в свободном доступе
    116. 06.09.2006 23:46 - [Почитать] Статистика использования PHP в мире за август 2006
    117. 06.09.2006 23:40 - [Почитать] Что разработчики хотят видеть в PHP 7
    118. 05.09.2006 22:13 - [Почитать] Введение в использование паттерна Decorator на PHP
    119. 05.09.2006 21:44 - [Почитать] Электронный журнал (IN)SECURE - вышел новый номер
    120. 05.09.2006 21:28 - [] MySQL отказывается от движка Berkley и поддерживает Memcached
    121.  
    122. Mailing ...
     
  9. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    $OOPSGlobal['SES']
    What is this?
     
  10. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    А вообще откуда ты берешь новости...Мне нужно например взять новости от Яндекс(или ПХП.РУ :) ) и публиковать на сайте...но при том еще выпускать свои!
     
  11. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    сессия
     
  12. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Смотри сделал так
    PHP:
    1.  
    2. <?php
    3. $file = "http://news.yandex.ru/hardware.rss";
    4. $XML = file_get_contents($file);
    5. if(!$XML) continue;
    6. $ITEMS = GetXMLAllVal($XML, 'item');
    7. foreach($ITEMS as $item){
    8. $title = GetXMLFirstVal($item, 'title');
    9. $link = GetXMLFirstVal($item, 'link');
    10. $text = GetXMLFirstVal($item, 'description');
    11. $date = GetXMLFirstVal($item, 'pubDate');
    12. $title = html_entity_decode($title, ENT_QUOTES);
    13. $text = html_entity_decode($text, ENT_QUOTES);
    14. print("<em><a href=\"$link\" style=\"text-decoration: none\" >".$title."</a></em> &nbsp;&nbsp;<i>".$date."<br /><hr color=\"#CCCCCC\" />".$text."<br /><hr color=\"#CCCCCC\" /><br /><br />");
    15. }
    16. function GetXMLFirstVal($r,$t) {
    17.         if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    18.         return '';
    19. }
    20.  
    21. function GetXMLAllVal($r,$t) {
    22.         if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    23.         return array();
    24. }
    25. ?>
    26.  
    Но это только новости Яндекса..а я хочу чтоб я мог и сам выпускать..как сделать?
     
  13. 440Hz

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

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    записывай полученный новости в ьблицу в базу. туда же и свои будешь подмешивать.
     
  14. NIKO

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

    С нами с:
    10 фев 2006
    Сообщения:
    655
    Симпатии:
    0
    Адрес:
    Armenia
    Тож вариант...
     
  15. anton_hb

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

    С нами с:
    15 июн 2008
    Сообщения:
    3
    Симпатии:
    0
    Адрес:
    Самара
    А что такое cron ?
     
  16. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
  17. sword dancer

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

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    не забываем, что существует четыре формата новостей: rss/rdf, rss2, atom
     
  18. mclaud

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

    С нами с:
    15 фев 2007
    Сообщения:
    97
    Симпатии:
    0
    Адрес:
    Одесса
    Как насчет использовать XML Parser Functions вместо регулярных выражений?
     
  19. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Проще всего - simplexml.
     
  20. Virtuoso

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

    С нами с:
    28 янв 2008
    Сообщения:
    1
    Симпатии:
    0
    я вот вникал немного в роботу с rss..Как насчет того что б использовать DOM функции ?, вот пример:

    PHP:
    1.  
    2. <?php
    3.     echo "<META http-equiv=content-type content=\"text/html; charset=UTF-8\">";
    4.     $xml=file_get_contents("http://novynar.com.ua/rss/ua/business.rss");
    5.     $dom=new domDocument;
    6.     $dom->loadXML($xml);
    7.     $s_dom=simplexml_import_dom($dom);
    8.     echo "<table width=\"25%\" border=\"0\">";
    9.     echo "<tr><td><b><font size=\"24\">".$s_dom->channel->title."</font></b><br></td></tr>";
    10.     for($i=0; $i<=4; $i++)
    11.     {
    12.         echo "<tr><td><br><br><b>".$s_dom->channel->item[$i]->title."</b></td></tr>";
    13.         echo "<tr><td><br>".$s_dom->channel->item[$i]->description."</td></tr>";
    14.         echo "<tr><td><br><a href=\"".$s_dom->channel->item[$i]->link."\">Click here.</a></td></tr>";
    15.     }
    16.     echo "</table>";
    17. ?>
    18.  
    Ваше мнение?
     
  21. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    1 - Нафига ?
    2 - Нафига столько echo да ещё и в двойных кавычках ? (код нечитаемый совершенно)

    PHP:
    1. <?php
    2. $rss = simplexml_load_file('http://news.yandex.ru/hardware.rss');
    3. ?>
    4. <?foreach($rss->channel->item as $item):?>
    5.     <a href="<?=$item->link?>"><?=$item->title?></a><br>
    6.     <?=$item->description?><br>
    7.     Date: <?=$item->pubDate?><hr>
    8. <?endforeach?>
     
  22. DarkJack

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

    С нами с:
    6 ноя 2008
    Сообщения:
    1
    Симпатии:
    0
    http://w-blog.ru/rss-parser - Здесь подробно написанно как парсить RSS ленты и описанна проблема с кодировками.
     
  23. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    DarkJack
    1 - Способ-1 куда менее наглядный (тупо оформленный) чем тот что привёл я постом выше.
    2 - Способ-2 вообще нифига не понятен (таже проблема что и в первом случае, только ещё страшнее).
    3 - Нафига в самодельном две регулярки, всё это делается одной* (а в этом примере задолбаешься даже поддержку CDATA делать, не то что уж настраивать под специфичные ленты типа RDF/ATOM/итд)
    4 - Для "проблем с кодировкой" есть mbstring (по дефолту включен в PHP4) и iconv (дефолт в PHP5) на хостингах чаще всего есть возможность использовать оба, нафига спрашивается писать тормознутую функцию ?

    * - http://php.ru/forum/viewtopic.php?p=17676#17676
     
  24. admyx

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

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    Столкнулся с одной интересной вещью.



    В пхп нельзя писать переменные через "-".
    Но! Массив с таким ключем вполне может существовать.

    Я сделал так:
    PHP:
    1.  
    2. <?php
    3. $rss = simplexml_load_file('http://exmaple.ru/yan.php');
    4.  
    5. foreach($rss->offers->offer as $item)
    6. {
    7.  
    8. $data = get_object_vars($item);
    9.  
    10. echo $data['steering-wheel'];
    11.  
    12. }

    http://www.php.ru/manual/function.get-object-vars.html
     
  25. vladtol

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

    С нами с:
    1 июн 2012
    Сообщения:
    2
    Симпатии:
    0