PHP试图编辑RSS Feed标题和描述长度,但它不起作用

时间:2014-08-08 21:06:32

标签: php rss

这是我的代码:

function getThisFeed($feedURL, $source){
$n = array(); //Random Variable to output later

$content = file_get_contents($feedURL); //gets contents of RSS feed
$rss = new SimpleXmlElement($content); //Converts to XML Element
$img = "";

switch ($source){
    case "reddit":
        $img = "http://dev.dotabattles.com/images/newsThumbs/redditThumb.png";
    break;

    case "joinDota":
        $img = "http://dev.dotabattles.com/images/newsThumbs/joinDotaThumb.png";
    break;

    case "gosu":
        $img = "http://dev.dotabattles.com/images/newsThumbs/gosuThumb.jpg";
    break;

    default:
        $img = "http://dev.dotabattles.com/images/newsThumbs/dotaThumb.png";
}

foreach($rss->channel->item as $entry){
    array_push($n, array("title" => substr($entry->title, 0, 50), "fullTitle" => $entry->title, "link" => $entry->link, "description" => $entry->description, "date" => strtotime($entry->pubDate), "img" => $img));
} //Loops through XML element saving the important information

return $n; //returns the full array
}

这是抓取Feed并为其显示缩略图图像的功能。

function getFullFeed($type = 'all'){
$news = array();
$output = "";
$reddit = getThisFeed("http://reddit.com/r/dota2/.rss", "reddit");
$joinDota = getThisFeed("http://www.joindota.com/feeds/news", "joinDota");
$gosu = getThisFeed("http://www.gosugamers.net/dota2/news/rss", "gosu");
switch ($type) {
    case "all":
        $news = feedArrayCombine($news, $reddit);
        $news = feedArrayCombine($news, $joinDota);
        $news = feedArrayCombine($news, $gosu);
        usort($news, "cmp");
        break;
    case "reddit":
        $news = $reddit;
        break;
    case "joinDota":
        $news = $joinDota;
        break;
    case "gosu":
        $news = $gosu;
        break;
    default:
        $news = "ERROR";
    }

return $news;
}

此功能是我在整个网站上快速调用不同Feed的方式。

function editFeed($feed, $titleLimit, $descLimit, $numEntries = null){ //for making small changes in the feed
$news = array();
$newsFeed = $feed;

if ($numEntries) {
    for ($i = 0; $i < $numEntries; $i++){
        array_push($news, $newsFeed[$i]);
    }
    $newsFeed = $news;
}

foreach($newsFeed as $f){
    $f['title'] = substr($f['title'], 0, $titleLimit);
    $f['description'] = substr($f['description'], 0, $descLimit);
}

return $newsFeed;
}

最后一个是我实际上是如何编辑Feed的。

<?php 
        $news = getFullFeed('gosu');
        $news = editFeed($news, 5, 100, 6);
        echo printFeed($news);
    ?>

这是我在我的网站上所说的。 printFeed只是一个将bootstrap元素与feed结合起来再次用于显示目的的函数。

一切都在显示,我只在Feed中获得了6个项目,但是titleLength和descriptionLength没有被更改。

0 个答案:

没有答案