我有一个包含多个文本文件的目录。我想要做的是随机选择其中一个文件,然后显示它。这是我到目前为止所得到的,但我仍然没有设法让它发挥作用。有什么想法吗?感谢。
<?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);
?>
答案 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'
它应该是正斜杠而不是斜线。还要检查您正在访问的目录的权限。