подгрузить случайный файл посредством пхп

Статус
В этой теме нельзя размещать новые ответы.

ramses21

Постоялец
Регистрация
20 Июл 2008
Сообщения
107
Реакции
16
Захотел вот я сделать на странице модуль, который будет подгружать случайный текст при каждой загрузке страницы.
если обычным способом мы подгружаем данные из указанного нами файла вот так

PHP:
<?include ("inc/file.inc");?>
хотелось бы узнать как можно подгрузить данные из случайного файла из директории inc/

Заранее благодарен
 
Получаем случайный файл

Код:
$dir = './inc';
 $file_arr = array();
 if ($dh = opendir($dir)) {
  while (($file = readdir($dh)) !== false) {
   if(!is_dir($dir.'/'.$file) )$file_arr[]= $dir.'/'.$file;
  }
  closedir($dh);
 }else{
  
  echo 'не можем открыть категорию.';
 }

  $random_file = $file_arr[array_rand($file_arr)];
 
что-то у меня совсем не получается. как мне файлы назвать в директории инк?
я пронумеровал их без расширения тхт.

выводит вот такую строку при запросе:
$random_file = $file_arr[array_rand($file_arr)];
 
эээ разрешение файлов вообще не влияет на работу. Может ты оставил $random_file = $file_arr[array_rand($file_arr)]; за пределами тегов php <? ... ?>
Если надо, могу прокомментировать каждый оператор.
 
эээ разрешение файлов вообще не влияет на работу. Может ты оставил $random_file = $file_arr[array_rand($file_arr)]; за пределами тегов php <? ... ?>
Если надо, могу прокомментировать каждый оператор.

ага, оставил :ah:
тока я сейчас сделал чтоб в теге пхп все было, но теперь получается пустая страница.
в подгружаемых файлах обычный текст.
 
Я надеюсь ты сделал include или file_get_contents?
Ибо $random_file будет содержать './inc/случайый_файл'
 
Если надо, могу прокомментировать каждый оператор.

если можно...
кроме инклюда и эхо больше ничего не знаю.

Я надеюсь ты сделал include или file_get_contents?

это конечно же я тоже не понял :ah:
куда это прописать надо? :thenks:

Добавлено через 10 минут
все нормально, все ок.
тему можно закрывать. разобрался благодаря советам KillDead
 
  • Заблокирован
  • #8
а так не проще?..
PHP:
$f = glob( 'inc/*' );

echo $f[ mt_rand( 0, ( sizeof($f) - 1 ) ) ];
 
PHP:
$dir = './inc'; // путь до папки
 $file_arr = array(); // массив, куда будут попадать все файлы
 if ($dh = opendir($dir)) { // открываем папку, если не удалось переходим по условию else 
  while (($file = readdir($dh)) !== false) { // перебираем всё, что есть в открытой папке
   if(!is_dir($dir.'/'.$file) )// если это не папка (среди файлов будут gfgrb ".", "..")
$file_arr[]= $dir.'/'.$file;  //помещаем в массив путь $dir и имя файла $file
  }
  closedir($dh);// закрываем
 }else{
 
  echo 'не можем открыть категорию.';
 }
// теперь в массиве $file_arr все файлы с путями.  array_rand вернёт случайный индекс массива
  $random_file = $file_arr[array_rand($file_arr)];
// $random_file содержит случайный файл , вместе с относительным путём
echo file_get_contents($random_file);// выведет содержание файла
 
  • Заблокирован
  • #10
лана.. тогда и я целиком.. ))
PHP:
$root  = $_SERVER['DOCUMENT_ROOT'] . '/inc/';

if( false !== ($f = glob( $root . '*.*' )) ){

$rf = $f[ mt_rand( 0, ( sizeof($f) - 1 ) ) ];

echo file_get_contents( $rf );

return;
}
echo 'нет никто';
думаю заработает.. ))
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху