如何显示随机文章

时间:2014-07-18 10:35:36

标签: php random article

我正在研究展示文章的项目,这是由文章管理员(一个随时可以使用的PHP脚本)完成但我有一个问题,我想只显示四个文章标题和摘要从旧的文章列表中随机包含10篇文章。知道如何实现这个过程吗? 我有自动生成的文章摘要

<div class="a1">
<h3><a href={article_url}>{subject}</h3>    
<p>{summary}<p></a>
</div> 

添加新文章时,将生成上述代码并添加到摘要页面中。我想将它添加到主文章页面的一侧,用户只能随机查看十篇或更多的四篇文章。

<?php
$lines = file_get_contents('article_summary.html');
$input = array($lines);
$rand_keys = array_rand($input, 4);
echo $input[$rand_keys[0]] . "<br/>";
echo $input[$rand_keys[1]] . "<br/>";
echo $input[$rand_keys[2]] . "<br/>";
echo $input[$rand_keys[3]] . "<br/>";
?>

谢谢你的善意。

1 个答案:

答案 0 :(得分:0)

假设我理解正确 - 一个简单的解决方案。

<?php
// Settings.
$articleSummariesLines = file('article_summary.html', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$showSummaries = 4;

// Check if given file is valid.
$validFile = ((count($articleSummariesLines) % 4 == 0) ? true : false);
if(!$validFile) {
  die('Invalid file...');
}

// Count articles and check wether all those articles exist.
$countArticleSummaries = count($articleSummariesLines) / 4;
if($showSummaries > $countArticleSummaries) {
  die('Can not display '. $showSummaries .' summaries. Only '. $countArticleSummaries .' available.');
}

// Generate random article indices.
$articleIndices = array();
while(true) {
  if(count($articleIndices) < $showSummaries) {
    $random = mt_rand(0, $countArticleSummaries - 1);

    if(!in_array($random, $articleIndices)) {
      $articleIndices[] = $random;
    }
  } else {
    break;
  }
}

// Display items.
for($i = 0; $i < $showSummaries; ++$i) {
  $currentArticleId = $articleIndices[$i];

  $content = '';
  for($j = 0; $j < 4; ++$j) {
    $content .= $articleSummariesLines[$currentArticleId * 4 + $j];
  }

  echo($content);
}