Пакет RSS в электронных письмах - PullRequest
1 голос
/ 24 февраля 2012

Я использовал следующий код для получения новостей Google, однако мне нужно, чтобы конечный результат на веб-сайте был реальным RSS-каналом, чтобы другие могли его получить.Прямо сейчас вывод создает хорошую страницу index.php.Это здорово, но не подходит моим целям.Может ли SimplePie создать страницу, отформатированную в формате 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>

1 Ответ

0 голосов
/ 24 февраля 2012

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 правильно сформирован, и что все экранировано правильно.

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

...