0

現在、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 はありません。更新してもランダムに生成された数字を同じに保つ方法はありますか? または、特定のタイトルに乱数を割り当てる方法はありますか?

前もって感謝します!

4

4 に答える 4

0

セッションに保存しないのはなぜですか?

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

番号を一度作成し、それを「永続的な」場所に保存します。これは、セッション、Cookie、またはデータベース内の可能性があります。3つの選択肢のうちどれがあなたに最適かを判断するのに十分な情報がないため、選択できません

于 2013-04-22T12:53:52.780 に答える
0

RSS フィードにはランダム ID はありません。ランダムにしたくないランダムIDを挿入しています。(なぜIDが必要なのかもわかりません。)

GUID から番号を取得するだけで、ニーズを満たす一意の ID が得られます。あなたが今持っているのは偽のIDだけです。

追加: ID が賢明なプロジェクトで「ランダム」であることはめったにありません。同じままのIDが必要です。おそらく、2 つのストーリーに同じ ID を持たせたくないでしょう。したがって、必要なのは乱数ではなく、ランダムに見える番号を新しいエントリごとに割り当てることです。

これは、データベースなしでは実行できません (ただし、フラット ファイル データベースを使用することはできます)。このテーブルには、「ArticleID」と「RandomID」の 2 つの列が必要です。

再度認識できるように、一意で変更されないアイテムをフィード内で見つける必要があります。ニュースのタイトルは変わるので、BBC の GUID の数字が最善の策です。

次に行う必要があるのは、この ArticleID 番号と一致する行の DB クエリを取得して、既存の RandomID を取得することです。存在しない場合は、現在の方法で乱数を生成し続け、新しい未使用の乱数が見つかるまで RandomID が既に使用されているかどうかを確認します。次に、ArticleID と RandomID を使用して新しい行を挿入し、新しい RandomID を任意のクレイジーな目的に使用します。

未使用の乱数のセットを事前に生成することもできます。最終的に必要になったときに、古い記事とランダム ID の組み合わせをより簡単に削除できるように、日付スタンプまたは自動インクリメント ID を導入することもできます。

于 2013-04-22T12:57:03.163 に答える