这是我的代码:
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没有被更改。