Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблема с чтением rss ленты с сайта regnum.ru
 
 автор: Fanat   (20.12.2006 в 14:01)   письмо автору
 
 

Посмотрел вот этот парсер RSS-новостей написаный
antf
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=639

Он читает только rss формата


    <item>
      <title>Азербайджан обеспечивает энергетическую безопасность в регионе, считает президент Грузии</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.interfax.ru/r/B/sng/14.html%3Fid%5Fissue%3D11650298&amp;country=Russia</link>
      <description>ИНТЕРФАКС-АЗЕРБАЙДЖАН -</description>
      <pubDate>Wed, 20 Dec 2006 13:00:04 +0300</pubDate>
      <guid>http://news.yandex.ru/yandsearch?cl4url=www.interfax.ru/r/B/sng/14.html%3Fid%5Fissue%3D11650298&amp;country=Russia</guid>
    </item>



а мне нужно читать rss с сайта регнум www.regnum.ru там можно выбирать в каком формате экспортировать новости можно rss, с разделением через табуляцию..
мне нужно читать rss но я посмотрел там немного другой формат rss :(

ВОт моя ссылка на сайте http://www.regnum.ru/getexp/?id=14150


<item>
<title><![CDATA[Гордума одобрила изменения геральдических символов Нижнего Новгорода]]></title>
<link>http://www.regnum.ru/news/758079.html</link>
<guid isPermaLink="true">http://www.regnum.ru/news/758079.html</guid>
<description><![CDATA[Депутаты Городской соответствие с совета...]]></description>
<pubDate>Wed, 20 Dec 2006 12:32:00 +0300</pubDate>
<category><![CDATA[ПОЛИТИКА]]></category>
<category><![CDATA[Нижегородская обл.]]></category>
</item>




поесть в добаляется внутки ещё и <![CDATA[ и читается уже не корректно точнее вообще не читается тем парсером... как быть? Почему такой сайт в таком формате экспортирует :( Да и с датой тот парсер по моему не справляется... сделали бы так : задаётся пользователем формат и в нём уже всё выводится...


Вобщем подскажите путь решения этой проблемы. Этот стандартный парсер вроде не подходит для чтения новостей в таком формате . Может быть кто то уже читает с этого сайта новости.

   
 
 автор: Fanat   (20.12.2006 в 16:15)   письмо автору
 
   для: Fanat   (20.12.2006 в 14:01)
 

КТо нибудь сталкивался с таким или нет? Вопрос тупой чтоли? Так так и скажите... искал я в поиске но нету там такого парсера который бы смог прочитать подобный формат :(

   
 
 автор: kasmanaft   (20.12.2006 в 17:28)   письмо автору
 
   для: Fanat   (20.12.2006 в 16:15)
 

Можно вот так сделать:

* * * * * * * * * * * * * * * * * * * * 
        if(ereg("<title>|<description>|<link>|<pubDate>|<guid isPermaLink=\"true\">", $Str)==True) 
        { 
           if (($Posl=StrPos($Str, "<![CDATA["))===false)
           {
              $Str=SubStr($Str, StrPos($Str, ">")+1);
              $Posr=StrRPos($Str, "<");
           }
           else 
           {                             
                 $Str=SubStr($Str, $Posl+9);
                 $Posr=StrPos($Str, "]");
           }
           $Str=SubStr_Replace($Str, '', $Posr);
* * * * * * * * * * * * * * * * * * * * 

   
 
 автор: Fanat   (21.12.2006 в 15:51)   письмо автору
 
   для: kasmanaft   (20.12.2006 в 17:28)
 

Хорошо посмотрю проверю. вообще мне кто-нито объяснит зачем они эту дату (<![CDATA[) вообще в содержание включают? На яндексе нет такого к примеру... почему они каких то стандартов не придурживаются :(

Я думаю можно содержание тэга цеплять регулярным выражением которое вырезает текст внутри тыга... например так...


if (preg_match("!<title>(.*?)</title>!si",$string,$ok))
   echo "Тег найден, текст: $ok[1]";
else
   echo "Тег не найден";


или так в нашем случае...


if (preg_match("!<description><![CDATA[(.*?)]</description>!si",$string,$ok))
   echo "Тег найден, текст: $ok[1]";
else
   echo "Тег не найден";


вощем будем пробовать...

   
 
 автор: kasmanaft   (21.12.2006 в 18:01)   письмо автору
 
   для: Fanat   (21.12.2006 в 15:51)
 

CDATA позволяет избежать обработки текста, содержащего символы, которые иначе распознавались бы как разметка. Те же <b> и </b> были бы распознаны как XML теги ...
А яндексу просто нельзя давать кв. скобки (вообще-то много еще чего кроме них).

>> ... цеплять регулярным выражением которое ...
Действительно проще было бы обработать текст рег. выражением ... Но тут для каждого конкретного случая пришлось бы писать свое рег. выражение, а этот код как нечто универсальное работает :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования