Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
<?
$filename = "test.txt";
$fp = fopen( $filename, 'r' );
$total_lines=0;
while( !feof( $fp ) )
{
$line = fgets( $fp, 4096 );
if( !feof( $fp ) ) $total_lines++;
}
$random_line = rand( 1, $total_lines );
rewind( $fp );
while( $random_line )
{
$line = fgets( $fp, 4096 );
$random_line--;
}
echo $line;
?>
Помогите с кодом пожалуйста
Необходимо рандомный вывод строк из txt файла
<?PHP
$file=file("путь_до_файла/имя_файла"); // Масив файла. В каждом ключе по строке.
$count=count($file); // Узнаем сколько ключей в масиве (=колличеству строк в файле +1 строка)
$count=$count-1; // Отнимаем ту самую лишнюю строку.
$rand=rand(0,$count); // Генерируем случайное число от "0" до колличества ключей в масиве (строк в файле).
echo $file[$rand]; // Выводим данные из масива $file со случайным ключем $rand. Ну или если попроще то выводим случайную строку из файла
?>
<?PHP
$file=file("путь_до_файла/имя_файла"); // Масив файла. В каждом ключе по строке.
echo $file[rand(0,count($file)-1)];
?>
Как вариант, если уж очень надо именно текстовый файл, сделай подобие индекса. То есть заведи еще один файл где через равное смещение пишутся данные строка-смещение-длина(необязательно) в основном файле.
Тогда выборка будет такая
1.генерим нужное число рэндомной строки.
2. Выбираем из файла индекса данные о строке по алгоритму номер*фикс. смещение
3. выбираем саму строку из основного файла данных.
Получишь нормальную скорость даже на больших файлах, но за счет лишнего места. Плюс проблемы с редактированием, после которого потери места вырастут.
зы: имхо это изврат. но иногда надо. сам подобное леплю.
Причем полный. Я согласен когда файло весит метров 300-~ но до меньшего размера это полный изврат.
у кнута в каком-то из томов есть крутой алгоритм для рандомного выбора с равной вероятностью при неизвестном количестве элементов, где не надо целиком считывать файл.