解析 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 . "')";
找到这个浮动脚本将给定的提要转储到 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 . "')";