解析 php 中的 rss 提要并转储到 sql

parsing rss feed in php and dump to sql

找到这个浮动脚本将给定的提要转储到 sql。但是无法在 table 中单独保存提要描述和图像。下面是当前正在保存一些内容但列为空的代码部分。

如有任何帮助或建议,我们将不胜感激。

    $db = mysql_connect($db_hostname,$db_username,$db_password);
if (!$db)
{
    die("Could not connect: " . mysql_error());
}
.....snip.............

编辑#1:

研究simplepie 脚本及其缓存。将更新应该今晚解决它。

编辑#2: SQL 查询已修改为包含 table 内容的描述和屏幕截图。

CREATE TABLE rss ( ............snip........................

enter image description here

编辑#3: thx robert 纠正我是的,它是原始脚本的快速复制粘贴,并没有放入正确的查询初始化。我已经更新了 sql 查询并修复了问题,但是现在修改后的脚本需要通过检索图像 link 和 post 来获取更多信息。我正在使用 xpath 获取每个 post 图像 link 但是无法将相应的图像与每个行转储合并。这两个脚本都 运行 完全符合各自的理由,但我需要更多帮助才能将它们合并在一起。

        require_once("./config.php");

    .......snip................

编辑#4: 好吧,它没有用,我设法用另一个脚本更新了现有的 table 我赞成你的回答,但由于这个原因,我没有接受它作为正确答案。可能我没能正确解释,但我的脚本运行得很好,只是缺少一些 CSS。 谢谢你的帮助

注意: 我从 post/

中截取了原始脚本

从您的屏幕截图中,您缺少 "item_enclosure" 和 "item_status" 列中的信息,其余的已填充。

问题是您的查询没有尝试插入那些缺失的条目

        $item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_description, item_url, fetch_date) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_description . "', '" . $item_url . "', '" . $fetch_date . "')";

^ 永远不会插入 "item_enclosure" 和 "item_status" 因为这两列不是插入查询的一部分...

您需要提取 2 个丢失的项目并将插入查询修改为:

        $item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_description, item_url, fetch_date, item_enclosure, item_status) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_description . "', '" . $item_url . "', '" . $fetch_date . "', '" . $item_enclosure . "', '" . $item_status . "')";

您需要先定义:

  • $item_enclosure
  • $item_status

顺便说一句,您在更新后的回复中粘贴的查询是错误的,它应该以 "INSERT INTO" 而非 "CREATE TABLE" 开头,您没有回应正确的查询。

更新:

在你的原始代码中有这一行

$has_image = preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $RSSitem, $image);

所以现在,如果您的代码找到了一张图片,它应该将其放入一个名为 $image

的数组中

尝试print_r of $image 看看它存储在哪个数组项中,我认为它将是$image[0][0] 或$image[0]

因此请执行以下操作来定义图像 URL(我猜它是 $image[0][0],但请仔细检查以防万一):

$img_url = (isset($image)) ? $image[0][0] : "";

然后你需要更新插入查询(我不知道图像使用的是什么列名,所以这只是一个例子):

    $item_insert_sql = "INSERT INTO rssingest(item_id, feed_url, item_title, item_date, item_description, item_url, fetch_date, item_enclosure, item_status, image_column) VALUES ('" . $item_id . "', '" . $feed_url . "', '" . $item_title . "', '" . $item_date . "', '" . $item_description . "', '" . $item_url . "', '" . $fetch_date . "', '" . $item_enclosure . "', '" . $item_status . "', '" . $img_url . "')";