0

我目前正在从 RSS Feed ( http://feeds.bbci.co.uk/news/rss.xml ) 中提取 XML。RSS 提要具有以下标签:

//Title of the item
<title><?php echo($item->title); ?></title>


<?php $numbers = rand(100000,999999); ?>
<ID>?php echo $numbers; ?></ID>

生成时的 ID 号工作正常,但是当刷新 php 时它会更改,因此每个项目没有恒定的 ID。有没有一种方法可以使随机生成的数字在刷新时也保持不变?或者有没有一种方法可以将随机数分配给特定的标题?

提前致谢!

4

4 回答 4

0

RSS 提要没有随机 ID。您正在插入一个随机 ID,您希望它不是随机的。(我什至不知道你为什么要身份证。)

如果您只是从他们的 guid 中获取数字,您将拥有一个可以满足您需求的唯一 ID。你现在只有一个假身份证。

补充:在任何明智的项目中,ID 都很少是“随机的”。您想要一个保持不变的 ID。大概,您也不希望两个故事具有相同的 ID。因此,您需要的不是随机数,而是为每个新条目分配一个看起来随机的数字。

没有数据库就无法做到这一点(尽管您可以使用平面文件数据库)。该表需要两列 - “ArticleID”和“RandomID”。

您需要在提要中找到一个唯一且不会更改的项目,以便您可以再次识别它。新闻标题确实会发生变化,因此 BBC 的 GUID 中的数字应该是您最好的选择。

然后您需要做的是获取此 ArticleID 编号和数据库查询以获取匹配的行以获取现有的 RandomID。如果没有,请继续以您当前的方式生成一个随机数并检查 RandomID 是否已被使用,直到找到一个新的未使用的随机数。然后插入一个带有 ArticleID 和 RandomID 的新行,将新的 RandomID 用于任何疯狂的目的。

您还可以提前生成一组未使用的随机数。您可能还希望引入日期戳或自动增量 ID,以便在最终需要时更轻松地删除旧文章/随机 ID 组合。

于 2013-04-22T12:57:03.163 回答
0

您可以将号码存储在会话中,或者如果您想将其永久存储在每个用户的文件或数据库中。

这样做的问题是,您需要将存储的 ID 与来自 RSS 提要的项目链接起来,因为提要中的所有标签内容都可能发生变化,所以您无法可靠地做到这一点。

在某种程度上,它将项目标题和随机生成的 ID 存储在文件(或数据库)中,然后刷新后,根据项目标题从文件中取出 ID(再次:或数据库)再次。但是如果项目的标题发生变化,脚本就不能再将任何 ID 与其关联。

于 2013-04-22T13:01:05.483 回答
0

为什么不把它保存在会话中?

session_start();
$_SESSION['numbers'] = rand(100000, 999999);
于 2013-04-22T12:52:36.360 回答
0

一次创建一个号码并将其存储在“永久”位置。这可以是 Session、Cookie 或在数据库中。我无法为您选择,因为我没有足够的信息来决定 3 个选择中的哪一个最适合您

于 2013-04-22T12:53:52.780 回答