为随机数分配一个保持不变的标题

时间:2013-04-22 12:49:16

标签: php xml random rss

我目前正从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 个答案:

答案 0 :(得分:0)

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

session_start();
$_SESSION['numbers'] = rand(100000, 999999);

答案 1 :(得分:0)

创建一个数字并将其存储在“永久”位置。这可以是会话,Cookie或数据库。我不能选择你,因为我没有足够的信息来决定3种选择最适合你

答案 2 :(得分:0)

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

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

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

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

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

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

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

答案 3 :(得分:0)

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

这样做的问题在于您需要将存储的ID与来自RSS源的项链接起来,由于源中的所有标记内容都可能发生变化,因此您无法可靠地执行此操作。

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