繁体   English   中英

使用PHP将RSS源写入MySQL

[英]Writing an RSS feed to MySQL using PHP

基本上我需要创建一个PHP文档来读取RSS源并将信息写入MySQL文档。 但是我在这方面的经验很少,我想知道是否有人能够提供一个如何做到这一点的例子? 我正在考虑一些使MagpieRSS陷入困境的事情,但是文档在黑暗中仍然非常让我=)

任何帮助将不胜感激

不确定你的目标是什么,但是:

来自Magpie文档:(参见用法示例)

require_once 'rss_fetch.inc';

$url = 'http://magpie.sf.net/samples/imc.1-0.rdf';
$rss = fetch_rss($url);

echo "Site: ", $rss->channel['title'], "<br>";
foreach ($rss->items as $item ) {
    $title = $item[title];
    $url   = $item[link];
    echo "<a href=$url>$title</a></li><br>";
}

这将使RSS提要成为可用的部分。 你可以改成这样的东西:

foreach ($rss->items as $item ) {
    $title = $item[title];
    $url   = $item[link];
    mysql_query("INSERT INTO `table` (`id`, `title`, `link`) VALUES (NULL, '$title', '$url')")";
}

这应该让你开始,如果没有别的。

最简单的方法是使用cURL从rss url获取XML信息,然后使用simplexml将rss XML转换为可遍历的对象。 使用Xpath获取要存储在DB中的XML部分。 最后,将数据移动到DB。

对不起,当我看到你的问题时,我正冲出门。 我实际上在一周前写了一个非常简单的脚本来完成你所说的大部分内容:

 //cURL to get RSS as XML
function get_rss($feed_url) {
    $feed_request = curl_init($feed_url);
    curl_setopt($feed_request, CURLOPT_RETURNTRANSFER, 1);
    $feed_xml = curl_exec($feed_request);
    curl_close($feed_request);

    return $feed_xml;
}

function rss2sql($xml, $sql) {
    //simplexml to convert XML to objects
    $rss_xml = simplexml_load_string($xml);
    //XPath to get an array of items in RSS
    $rss_items = $rss_xml->xpath('//item');
    if(!$rss_items) {
        die("No Items In RSS Feed!");
    } else {
        // Create Prepared Statement for Insert and bind variables.
        $item_insert = $sql->prepare("INSERT INTO rsstable VALUES (?, ?, ?, ?)");
        $item_insert->bind_param('ssss', $item->title,$item->link,$item->guid,$item->description);
        //Loop through each item and execute prepared statement
        foreach($rss_items as $item) {
            $item_insert->execute();
        }
    }
}

$sql = new mysqli("localhost", "my_user", "my_password", "world");
$rss_url = "http://example.org/rssfeed";
$rss_xml = get_rss($rss_url);

rss2sql($rss_xml, $sql);

MagpieRSS似乎是一个不错的选择。 是的,文档可能会更好,但您可以在首页上找到所需的所有示例:

require('rss_fetch.inc');
$rss = fetch_rss($url);
$items = rss->items;

只需拥有一个关联数组,然后您可以操作它以插入数据库。

foreach ($rss->items as $item ) {
    $title = $item[title];
    $url   = $item[link];
    mysql_query("INSERT INTO rss_articles ( title, link ) VALUES ( $title, $url );

    //Of course, this has no security measures which you should really look into.       
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM