2011-11-09 63 views
-1

我想从此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提要中获取这些数据?请,我需要指导。

+0

您已添加没有关于您的数据库(MySQL,MSSQL,Oracle)的信息,并且您已经拥有数据库。请提供更多信息。 – Manuel

+0

我正在使用mysql,我没有任何问题插入我的数据库,但我想知道我是如何从rss提要读取这些数据的。 – omnath

+0

dragon112,从代码中可以清楚的看出,他已经拥有数据库连接,并且基础数据库和他正在使用MySQL。 –

回答

1

当您在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