2012-02-24 2 views
1

Я использую следующий код для извлечения новостей Google, однако мне нужно, чтобы конечный результат на веб-сайте был фактическим rss-каналом, чтобы другие могли захватить фид. Прямо сейчас на выходе создается приятная страница index.php. Это здорово, но не подходит для моих целей. Может ли SimplePie создать страницу, которая отформатирована как rss-выход для захвата?Bundle RSS в письмах

заблаговременно.


<?php 

// Make sure SimplePie is included. You may need to change this to match the location of simplepie.inc. 
require_once('simplepie.inc'); 

// We'll process this feed with all of the default options. 
$feed = new SimplePie(); 

// Set the feed to process. 
$feed->set_feed_url('http://news.google.com/news?hl=en&gl=us&q=new+york+commercial+real+estate&ie=UTF-8&output=rss'); 

// Run SimplePie. 
$feed->init(); 

// This makes sure that the content is sent to the browser as text/html and the UTF-8 character set (since we didn't change it). 
$feed->handle_content_type(); 

// Let's begin our XHTML webpage code. The DOCTYPE is supposed to be the very first thing, so we'll keep it on the same line as the closing-PHP tag. 
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
    <title>Sample SimplePie Page</title> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 

</head> 
<body> 

     <div class="header"> 
     <h2><a href="<?php echo $feed->get_permalink(); ?>"><?php echo $feed->get_title(); ?></a></h2> 
     <p><?php echo $feed->get_description(); ?></p> 
    </div> 

    <?php 
    /* 
    Here, we'll loop through all of the items in the feed, and $item represents the current item in the loop. 
    */ 
    foreach ($feed->get_items() as $item): 
    ?> 

     <div class="item"> 
      <h4><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h4> 
      <p><?php echo $item->get_description(); ?></p> 
      <p><small>Posted on <?php echo $item->get_date('j F Y | g:i a'); ?></small></p> 
     </div> 

    <?php endforeach; ?> 

</body> 
</html> 
+0

FYI, я считаю, что переупаковка Google Новостей так, как вы описываете, нарушает их Условия обслуживания. – Brad

ответ

0

SimplePie используется только для стадии синтаксического анализа, вы должны написать свой собственный код для вывода ее как RSS.

Вы можете сделать это быстрый и грязный путь:

<?xml version="1.0" encoding="UTF-8" ?> 
<rss version="2.0"> 
    <channel> 
     <title>Your Site</title> 

<?php 
     foreach ($feed->get_items() as $item): 
?> 
     <entry> 
      <title><?php echo $item->get_title() ?></title> 
      <description><?php echo $item->get_content() ?></description> 
      <!-- ... --> 
     </entry> 
    </channel> 
</rss> 

Гораздо лучше всего использовать SimpleXML для создания элементов, а затем выводим результат этого. Это гарантирует, что ваш XML будет хорошо сформирован и что все будет экранировано правильно.

Однако при этом вы должны быть осторожны с условиями обслуживания, как упоминал Брэд. Вы должны обеспечить надлежащую атрибуцию, по крайней мере.

+0

Спасибо, и я очень обеспокоен нарушением любых условий обслуживания. Я прочитал их условия обслуживания, и кажется, что если вы обеспечите надлежащую атрибуцию, это не будет проблемой, но я, безусловно, открыт для обсуждения этого вопроса, поскольку кажется неясным. Что касается фрагментов кода, спасибо за предложения, я попробую. –

+0

Что касается быстрого и простого предоставления Ryan - это код, который будет интегрирован в SimplePie или независимый код, полностью отделенный от SimplePie? Я вижу, что $ item-> get_title() выглядит как код библиотеки simplepie и не может найти ссылки на URL-адрес фида. Спасибо. –

+0

Этот код идет туда, куда вы хотите вывести фид. В приведенном выше примере он заменяет все после «Начнем наш код веб-страницы XHTML». Это также очень быстрый пример: полный фид будет содержать гораздо больше информации, однако это просто пример соответствия меток методам SimplePie. –

Смежные вопросы