PHP - RSS builder

前端 未结 6 1613
天命终不由人
天命终不由人 2021-01-22 04:25

I have a old website that generate its own RSS everytime a new post is created. Everything worked when I was on a server with PHP 4 but now that the host change to PHP 5, I alwa

相关标签:
6条回答
  • 2021-01-22 04:34

    I would use simpleXML to create the required structure and export the XML. Then I'd cache it to disk with file_put_contents().

    0 讨论(0)
  • 2021-01-22 04:47

    At swcombine.com we use Feedcreator. Use that one and your problem will be gone. :)

    Here is the PHP code to use it once installed:

    function feed_simnews() {
        $objRSS = new UniversalFeedCreator();
        $objRSS->title = 'My News';
        $objRSS->link = 'http://link.to/news.php';
        $objRSS->description = 'daily news from me';
        $objRSS->xsl = 'http://link.to/feeds/feedxsl.xsl';
        $objRSS->language = 'en';
        $objRSS->copyright = 'Copyright: Mine!';
        $objRSS->webmaster = 'webmaster@somewhere.com';
        $objRSS->syndicationURL = 'http://link.to/news/simnews.php';
        $objRSS->ttl = 180;
    
        $objImage = new FeedImage();
        $objImage->title = 'my logo';
        $objImage->url = 'http://link.to/feeds/logo.jpg';
        $objImage->link = 'http://link.to';
        $objImage->description = 'Feed provided by link.to. Click to visit.';
        $objImage->width = 120;
        $objImage->height = 60;
        $objRSS->image = $objImage;
    
        //Function retrieving an array of your news from date start to last week
        $colNews = getYourNews(array('start_date' => 'Last week'));
    
        foreach($colNews as $p) {
            $objItem = new FeedItem();
            $objItem->title = $p->title;
            $objItem->description = $p->body;
            $objItem->link = $p->link;
            $objItem->date = $p->date;
            $objItem->author = $p->author;
            $objItem->guid = $p->guid;
    
            $objRSS->addItem($objItem);
        }
    
        $objRSS->saveFeed('RSS2.0', 'http://link.to/feeds/news.xml', false);
    };
    

    Quite KISS. :)

    0 讨论(0)
  • 2021-01-22 04:50

    Not a full answer, but you don't have to parse your own XML. It will hurt performance and reliability.

    But definitely make sure it is well-formed. It shouldn't be very hard if you generate it by hand or using general-purpose tools. Or maybe your included HTML ruins it?

    0 讨论(0)
  • 2021-01-22 04:51

    There are lots of things that can make XML malformed. It might be a problem with character entities (a '<', '>', or '&' in the data between the XML tags). Try running anything output from a database through htmlentities() when you concatenate the string. Do you have an example of the generated XML for us to look at so we can see where the problem is?

    0 讨论(0)
  • 2021-01-22 04:53

    I've used this LGPL-licensed feedcreator class in the past and it worked quite well for the very simple use I had for it.

    0 讨论(0)
  • 2021-01-22 05:00

    PHP5 now comes with the SimpleXML extension, it's a pretty quick way to build valid XML if your needs aren't complicated.

    However, the problem you're suggesting doesn't seem to an issue of implementation more a problem of syntax. Perhaps you could update your question with a code example, or, a copy of the XML that is produced.

    0 讨论(0)
提交回复
热议问题