Вывод случайного текста

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru
Вот тут нарыл несколько вариантов

1
PHP:
$textfile = 'quotes.txt'; //путь к файлу
if ($quotes = @file($textfile)) {
$quote = rand(0, sizeof($quotes)-1);
$quote1 = rand(0, sizeof($quotes)-1);
echo $quotes[$quote].$quotes[$quote1]; //вывод рандомного текста
}else{
echo ('Нет рандомного контента'); //вывод сообщения, если файл не найден
}
2
PHP:
$rand_1['datafile'] = 'quotes.txt';
mt_srand ((float) microtime() * 1000000);
$rand_2 = file($rand_1['datafile']);
$rand_3 = count($rand_2) - 1;
$random = $rand_2[mt_rand(0,$rand_3)];
echo $random;
3
PHP:
$file = file('quotes.txt')
mt_srand ((float) microtime() * 1000000); 
$random = mt_rand(0,count($file) - 1); 
echo $file[$random];

Выбрал я вариант номер 3 и чуток его изменил
PHP:
if ($file = file('quotes.txt'))
{ 
mt_srand ((float) microtime() * 1000000); 
$random = mt_rand(0,count($file) - 1); 
$random1 = mt_rand(0,count($file) - 1);
$random2 = mt_rand(0,count($file) - 1);
$random3 = mt_rand(0,count($file) - 1);
$random4 = mt_rand(0,count($file) - 1);
$random5 = mt_rand(0,count($file) - 1);
$random6 = mt_rand(0,count($file) - 1);
$random7 = mt_rand(0,count($file) - 1);
$random8 = mt_rand(0,count($file) - 1);
$random9 = mt_rand(0,count($file) - 1);
echo '<br>'.$file[$random].$file[$random1].$file[$random2].$file[$random3].$file[$random4].$file[$random5].$file[$random6].$file[$random7].$file[$random8].$file[$random9].'<br>';
}else{echo ('Нет рандомного контента'); //вывод сообщения, если файл не найден
}
Но я незнаю как можно сократить запись если мне нужно вывести например 100 строк из файла а не 9. Полегче можно выполнить код?
 

Axom

Администратор
Администратор
8 Фев 2005
2.710
210
63
foreach используй!
 

Minas

Модератор
Модератор
25 Фев 2005
472
9
18
37
anime-street.ru
блин я бы уже нашел бы готовый скрипт кокой нить и припоял бы
 

wext

Король пиратов
Пользователь
11 Фев 2005
3.774
22
38
34
grand line
madfrager.ru
Лень смотреть все эти 100500 кодов. Что нужно? Выбрать случайный номер строки из текстовика?
 

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru
Скрипт рондомно из текста выбирает одну строку что бы он показал не одну строку, надо добавить в скрипт строки
$random1 = mt_rand(0,count($file) - 1);
$random2 = mt_rand(0,count($file) - 1);

echo $file[$random1].$file[$random2];

А если мне нужно вывести не одну строку, а 100 и придется добавлять 100 раз строк
$random1 = mt_rand(0,count($file) - 1);
$random2 = mt_rand(0,count($file) - 1);
$random99 = mt_rand(0,count($file) - 1);
$random100 = mt_rand(0,count($file) - 1);

echo $file[$random1].$file[$random2].$file[$random99].$file[$random100];

А нельзя ли просто указать сколько строк надо выбирать из файла?
 

Axom

Администратор
Администратор
8 Фев 2005
2.710
210
63
Короче вот что состряпал:
PHP:
<?php
$file = file('1.txt');
mt_srand ((float) microtime() * 1000000);
$rand=array_rand($file, 1);
echo $file[$rand] . "\n";
?>
 
Последнее редактирование:
  • Like
Реакции: FussesDemon

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru
Спасибо то что доктор прописал )

PHP:
$file = file('quotes.txt');
mt_srand ((float) microtime() * 1000000);
$rand=array_rand($file, 3);
echo $file[$rand[0]] . $file[$rand[1]] . $file[$rand[2]] ."\n";
 

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru
PHP:
$file = file('quotes.txt');
mt_srand ((float) microtime() * 1000000);
$rand=array_rand($file, 7);
echo $file[$rand[0]] . $file[$rand[1]] . $file[$rand[2]] . $file[$rand[3]] . $file[$rand[4]] . $file[$rand[5]] . $file[$rand[6]] . $file[$rand[7]] ."\n";
Почему когда 7 слов показывает слова не меняются после каждого обновления браузера, и больше 7 указать нельзя ошибку пишет

PHP Warning: array_rand() [function.array-rand]: Second argument has to be between 1 and the number of elements in the array in test.php on line 6
 
Последнее редактирование модератором:

Axom

Администратор
Администратор
8 Фев 2005
2.710
210
63
Всё пашет.
Главное чтобы больше 7 было и каждая ссылка с новой строки в quotes.txt.
И зачем 2 точки писать? :smile:
 

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru

Axom

Администратор
Администратор
8 Фев 2005
2.710
210
63
Ну ты логически подумай.
У тебя в текстовом файле 7 строк, ты во втором примере заставляешь его искать 8 строку, а её нет!
Тем более смысл требовать 8 из 7 рандомных, когда они будут все выводиться?
 

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru
А если у меня всего две строки, но их надо повторить 30 раз:this:, а еще что бы они рандомно выбирались каждый раз.


Вот этот скрипт выполняет все но не удобно то что каждый раз приходится добавлять струку
$random25 = mt_rand(0,count($file) - 1);
$random26 = mt_rand(0,count($file) - 1);
$random27 = mt_rand(0,count($file) - 1);
$random28 = mt_rand(0,count($file) - 1);



if ($file = file('quotes.txt'))
{
mt_srand ((float) microtime() * 1000000
);
$random = mt_rand(0,count($file) - 1
);
$random1 = mt_rand(0,count($file) - 1
);
$random2 = mt_rand(0,count($file) - 1
);
$random3 = mt_rand(0,count($file) - 1
);
$random4 = mt_rand(0,count($file) - 1
);
$random5 = mt_rand(0,count($file) - 1
);
$random6 = mt_rand(0,count($file) - 1
);
$random7 = mt_rand(0,count($file) - 1
);
$random8 = mt_rand(0,count($file) - 1
);
$random9 = mt_rand(0,count($file) - 1
);
echo
'<br>'.$file[$random].$file[$random1].$file[$random2].$file[$random3].$file[$random4].$file[$random5].$file[$random6].$file[$random7].$file[$random8].$file[$random9].'<br>'
;
}else{echo (
'Нет рандомного контента');
//вывод сообщения, если файл не найден
}
 
Последнее редактирование модератором:

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru
Как сотворить что то в этом роде ? ... )

PHP:
$number_text='9'; // число показа ссылок
 
if ($file = file('quotes.txt'))
{ 
mt_srand ((float) microtime() * 1000000); 
$random[$number_text] = mt_rand(0,count($file) - 1); 
echo '<br>'.$file[$random[0]].$file[$random[1]].$file[$random[2]].$file[$random[3]].$file[$random[4]].$file[$random[5]].$file[$random[6]].$file[$random[7]].$file[$random[8]].$file[$random[9]].'<br>';
}else{echo ('Нет рандомного контента'); //вывод сообщения, если файл не найден
}
 

FussesDemon

Администратор
Администратор
9 Фев 2005
6.440
694
113
www.unifree.ru
Во у меня получилось )))




PHP:
if ($file_word = file('quotes.txt'))
{mt_srand ((float) microtime() * 1000000);
$random_num=10;
for ($i=1; $i <= $random_num; $i++)
{
$random[$i] = mt_rand(0,count($file_word) - 1); 
}
echo '<br>'.$file[$random[1]].$file[$random[2]].$file[$random[3]].$file[$random[4]].$file[$random[5]].$file[$random[6]].$file[$random[7]].$file[$random[8]].$file[$random[9]].$file[$random[10]].'<br>';
}else{echo ('Нет рандомного контента'); //вывод сообщения, если файл не найден
}