获取来自复杂rss订阅源的所有数据
问题描述:
我想从此rss订阅源读取并保存一些数据到我的数据库表中。 RSS订阅是http://feeds.feedburner.com/TechCrunch/。获取来自复杂rss订阅源的所有数据
我用下面的代码之前读取另一个RSS提要:
$homepage = file_get_contents('http://rss.cnn.com/rss/edition_technology.rss');
$homepage = preg_replace("/(<\/?)(\w+):([^>]*>)/", "$1$2$3", $homepage);
$xml = simplexml_load_string($homepage,'SimpleXMLElement', LIBXML_NOCDATA);
echo '<pre>';
print_r($xml);
foreach($xml->channel->item as $opt) {
$title = mysql_real_escape_string($opt->title);
$link = mysql_real_escape_string($opt->link);
$des = mysql_real_escape_string($opt->description);
// and others
$sql =
"INSERT INTO store_feed (title, link, description)
VALUES('$title','$link','$des')
ON DUPLICATE KEY UPDATE title = '$title', description = '$des'";
$result = mysql_query($sql) or die(mysql_error());
}
...我得到了想要的数据,但是这一次的数据是不同的。
我想存储链接,说明,图片,发布日期,此订阅源的标题。我怎样才能做到这一点?
我知道如何插入数据库,但是如何从RSS提要中获取这些数据?请,我需要指导。
答
当您在xml字符串上使用simplexml_load_string()时,将其转换为对象树。
这个XML:
<channel>
<item>
<title>Example Title</title>
<description>Example Description</description>
</item>
</channel>
...转化为东西,你可以使用像这样:
$xml->channel->item->title;
$xml->channel->item->description;
所以,你需要看看新的RSS提要的XML怎么看你可以改变你的代码。它可能会是这个样子:
foreach($xml->channel->item as $opt) {
$title = mysql_real_escape_string($opt->title);
$link = mysql_real_escape_string($opt->link);
$des = mysql_real_escape_string($opt->description);
$publication_date = mysql_real_escape_string($opt->pubDate);
$image = mysql_real_escape_string(strip_tags($opt->description, '<img>'));
}
的图像是描述里面,所以我们可以把它用strip_tags()提取。
+0
我使用您的代码和它的工作标题,链接,说明,但图像仍然无法正常工作。它保存在描述列中,但即使使用“strip_tags()”我也不能保存它。 – Arif
您已添加没有关于您的数据库(MySQL,MSSQL,Oracle)的信息,并且您已经拥有数据库。请提供更多信息。 – Manuel
我正在使用mysql,我没有任何问题插入我的数据库,但我想知道我是如何从rss提要读取这些数据的。 – omnath
dragon112,从代码中可以清楚的看出,他已经拥有数据库连接,并且基础数据库和他正在使用MySQL。 –