从目录中随机选择一个文件,然后显示它

时间:2014-09-20 08:20:12

标签: php php-5.4

我有一个包含多个文本文件的目录。我想要做的是随机选择其中一个文件,然后显示它。这是我到目前为止所得到的,但我仍然没有设法让它发挥作用。有什么想法吗?感谢。

<?php
function random_pic($dir = 'wp-content\files')
{
    $files = opendir($dir . '/*.txt');
    $file = array_rand($files);
    return $files[$file];
}

while(!feof($file)) { 
        echo fgets($file) . "<br />";
    }

    fclose($file);
?>

4 个答案:

答案 0 :(得分:1)

scandir会将目录中的所有元素放入数组中。然后使用array_rand从数组中选择一个随机元素。

$dir = "/path/to/pictures/";
$dirarray = scandir( $dir );
unset($dirarray [0]);
unset($dirarray [1]);
$content = file_get_contents( $dir . $dirarray[array_rand($dirarray )] );
echo $content;

unset命令用于从阵列中删除...。 例如,这会导致回显picturename.jpg

答案 1 :(得分:0)

在while循环条件中使用带有参数的函数名,并且检查函数是否返回文件名。请查看以下链接以获取详细信息http://php.net/manual/en/function.readdir.php

答案 2 :(得分:0)

试试这个: -

使用glob函数获取目录中的所有文件,然后从该数组中获取随机元素并将其返回。然后读取文件并回显其内容。

function get_random_file($dir = 'folder_name')
{
    $files = glob($dir . '/*.txt');
    $file = array_rand($files);
    return $files[$file];
}

   $fh = fopen($myFile, 'r');
   $theData = fread($fh, filesize($myFile));
   fclose($fh);
   echo $theData;

答案 3 :(得分:0)

您的目录中有错误的斜杠。

$dir = 'wp-content\files'

应该是

$dir = 'wp-content/files'

它应该是正斜杠而不是斜线。还要检查您正在访问的目录的权限。