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


Assigning a random number to a title which stays the same

我目前正在从RSS提要(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。是否有一种方法来保持随机生成的数字相同,即使刷新?或者是否有一种方法可以将随机数分配给特定的标题?

提前感谢!

为什么不直接保存在会话中呢?

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

创建一个数字,并将其存储在一个"永久"位置。它可以是Session、Cookie或数据库。我不能为你选择,因为我没有足够的信息来决定这三个选择中哪一个最适合你

您可以将该数字存储在会话中,或者如果您想永久存储它,则可以将其存储在文件或数据库中。

这样做的问题是,您需要一些东西将存储的ID与来自RSS提要的项目链接起来,这是不可靠的,因为提要中的所有标记内容都可能更改。

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

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

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

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

如果没有数据库(尽管可以使用平面文件数据库)就不能这样做。这个表需要两列——'ArticleID'和'RandomID'。

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

你需要做的是拿这个ArticleID号码和DB查询匹配行来获得一个现有的RandomID。如果没有,继续以当前的方式生成一个随机数,并检查RandomID是否已经被使用,直到找到一个新的未使用的随机数。然后插入一个新的行与ArticleID和RandomID,使用新的RandomID为任何疯狂的目的,你有。

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