php将文件列表作为数组,输出1个带扩展名的随机文件名。

时间:2014-09-18 11:26:05

标签: php

所以我要做的就是从目录中获取一个文本文件列表。

取出该列表并随机选择1个文件。

然后获取该文件并打印出内容。现在我几年前做到了这一点。但无法找到我的旧脚本。我尝试了以下我只有打印出一个文件名..但事件不起作用?

$path  = '/seg1';
$files = scandir($path);

$seg = array ( $files );

$rand_keys = array_rand($seg, 1);

print $rand_keys;

对此以及任何输入都会喜欢一些新的眼睛。

4 个答案:

答案 0 :(得分:1)

/*** Search All files in Dir. with .txt extension ***/ 

foreach (glob('./seg1/*.txt') as $filename)
  {
  $myFiles[] = $filename;
/*** Array of file names **/
}

/*** Total count of files ***/

$max=sizeof($myFiles);

/*** Select a Random index for Array with Max limit  ***/

$fileNo=rand(0, $max);

/*** Path of the Random file to Access ***/ 

$file=$myFiles[$fileNo];

/*** Get the content from Text file ****/

$data = file_get_contents($file, true);

答案 1 :(得分:0)

正如您的变量命名所示,您从数组中随机选择一个;尝试通过

获取价值
$filename = $seg[$rand_keys];

答案 2 :(得分:0)

建议您使用 glob ,这样您才能获得所需的文件,这会排除...等系统目录

foreach (glob("seg1/*.txt") as $filename) {
  $seg[] = $filename;
}

或者更简单的解决方案:

$rand_keys = array_rand(glob("seg1/*.txt"), 1);

答案 3 :(得分:0)

$path  = '/seg1';
$files = scandir($path));
if($files)
    echo file_get_contents($files[mt_rand(2,count($files))]);