Анализ RSS-новостей Google с помощью PHP

Я хочу разобрать Google News rss с PHP. Мне удалось запустить этот код:

<? $news = simplexml_load_file('http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=n&output=rss'); foreach($news->channel->item as $item) { echo "<strong>" . $item->title . "</strong><br />"; echo strip_tags($item->description) ."<br /><br />"; } ?> 

Однако я не могу решить следующие проблемы. Например:

  1. Как я могу получить гиперссылку заголовка новостей?
  2. Поскольку в каждой из новостей Google есть много связанных новостных ссылок в нижнем колонтитуле (и мой код также включает их также). Как я могу удалить их из описания?
  3. Как я могу получить изображение каждой новости? (Google отображает миниатюру каждого из новостей)

Благодарю.

Там мы идем, что вам нужно для вашей конкретной ситуации:

 <?php $news = simplexml_load_file('http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=n&output=rss'); $feeds = array(); $i = 0; foreach ($news->channel->item as $item) { preg_match('@src="([^"]+)"@', $item->description, $match); $parts = explode('<font size="-1">', $item->description); $feeds[$i]['title'] = (string) $item->title; $feeds[$i]['link'] = (string) $item->link; $feeds[$i]['image'] = $match[1]; $feeds[$i]['site_title'] = strip_tags($parts[1]); $feeds[$i]['story'] = strip_tags($parts[2]); $i++; } echo '<pre>'; print_r($feeds); echo '</pre>'; ?> 

Результат должен выглядеть так:

 [2] => Array ( [title] => Los Alamos Nuclear Lab Under Siege From Wildfire - ABC News [link] => http://news.google.com/news/url?sa=t&fd=R&usg=AFQjCNGxBe4YsZArH0kSwEjq_zDm_h-N4A&url=http://abcnews.go.com/Technology/wireStory?id%3D13951623 [image] => http://nt2.ggpht.com/news/tbn/OhH43xORRwiW1M/6.jpg [site_title] => ABC News [story] => A wildfire burning near the desert birthplace of the atomic bomb advanced on the Los Alamos laboratory and thousands of outdoor drums of plutonium-contaminated waste Tuesday as authorities stepped up ... ) 

Я бы рекомендовал проверить SimplePie . Я использовал его для нескольких разных проектов, и он отлично работает (и абстрагирует всю головную боль, с которой вы сейчас сталкиваетесь).

Теперь, если вы пишете этот код просто потому, что хотите узнать, как это сделать, вы, вероятно, должны игнорировать этот ответ. 🙂

  1. Чтобы получить URL-адрес для новостного материала, используйте ссылку $ item->.
  2. Если существует общий разделитель для связанных ссылок новостей, вы можете использовать регулярное выражение, чтобы отрезать все после него.
  3. Google помещает HTML-код эскиза в поле описания фида. Вы можете повторно размещать все между открытыми и закрывающимися скобками для объявления изображения, чтобы получить HTML-код для него.