У меня есть каталог, который содержит несколько текстовых файлов. Я пытаюсь случайным образом выбрать один из файлов и затем отобразить его. Вот что я получил до сих пор, но мне так и не удалось заставить его работать. Есть идеи? Благодарю.
<?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);
?>
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
,
У вас неправильный слеш в вашем каталоге.
$dir = 'wp-content\files'
должно быть
$dir = 'wp-content/files'
Это должен быть слеш, а не слеш. Также проверьте разрешение каталога, к которому вы обращаетесь.
Попробуй это:-
использование шарик функция, чтобы получить все файлы в каталоге, а затем взять случайный элемент из этого массива и вернуть его. Затем прочитайте файл и просмотрите его содержимое.
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;
используйте имя функции с параметрами в цикле while и проверьте функцию, возвращающую имя файла или нет. Проверьте следующую ссылку для деталей http://php.net/manual/en/function.readdir.php