Выбор файла из каталога случайным образом, а затем отобразить его

У меня есть каталог, который содержит несколько текстовых файлов. Я пытаюсь случайным образом выбрать один из файлов и затем отобразить его. Вот что я получил до сих пор, но мне так и не удалось заставить его работать. Есть идеи? Благодарю.

<?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

Решение

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

Другие решения

У вас неправильный слеш в вашем каталоге.

$dir = 'wp-content\files'

должно быть

$dir = 'wp-content/files'

Это должен быть слеш, а не слеш. Также проверьте разрешение каталога, к которому вы обращаетесь.

0

Попробуй это:-

использование шарик функция, чтобы получить все файлы в каталоге, а затем взять случайный элемент из этого массива и вернуть его. Затем прочитайте файл и просмотрите его содержимое.

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;
0

используйте имя функции с параметрами в цикле while и проверьте функцию, возвращающую имя файла или нет. Проверьте следующую ссылку для деталей http://php.net/manual/en/function.readdir.php

0
По вопросам рекламы [email protected]