1

Topic: Случайный вывод строки из файла на страницу

Вывод строки из файла было как одно из решений для написания скрипта, чтобы выводить рекламу на форуме PunBB. Но...
Для начала давайте создадим файл с тем, что у нас будет выводиться. Каждая строчка — отдельный вывод. То есть, на первой строчке располагается первый блок с рекламой, на второй — второй, на третьей — третий и так далее. Итак, создадим файл с таким наполнением:

<strong>Это первый баннер</strong>
<em>Это второй баннер</em>
<del>Это третий баннер</del>

После чего сохраним его в корень нашего сайта. Естественно, в каждой строчке вы можете использовать любые теги и вообще любое наполнение. То-бишь, там вполне могут быть, например, строки .js скрипта.

2

Re: Случайный вывод строки из файла на страницу

Теперь нам нужно создать код, который будет случайным образом выводить рекламу. В моём случае он выглядит следующим образом:

<?php
$filename = "https://punbb.softplaza.net/robots.txt";
$banners = file($filename);
srand ((double) microtime() * 100000000);
$i = rand(0, sizeof($banners) -1);
$reklama = $banners[$i];
$reklama = str_replace ('
', '', $reklama);
echo $reklama;
?>

Давайте теперь для ясности разберём каждую строчку.

<?php

Это объявление php, думаю, понятно. Тем самым мы даём серверу понять, что тот код, что расположен дальше, нужно не просто вывести, а именно выполнить.

$filename = "https://punbb.softplaza.net/robots.txt";

Присваиваем переменной «filename» полный путь до нашего файла. В данном случае я вставил туда путь до моего robots.txt. Вы же вставляете путь до файла, который мы с вами уже создали.

$phrases = file($filename);

Считываем файл, путь до которого мы указали в переменной «filename» и по строкам вводим его в массив с названием «banners». То-бишь, каждая строка нашего файла будет элементом в массиве.

srand ((double) microtime() * 100000000);

3

Re: Случайный вывод строки из файла на страницу

srand — функция, которая задает начальное число генератора псевдослучайных чисел. Всегда задается при использовании этого генератора, если вы, конечно, не желаете получать от него одно и то же значение.

microtime() — функция, возвращающая значение в виде «msec sec», где «sec» — количество секунд, прошедших с начала эпохи Unix (1 января 1970 0:00:00 GMT), а «msec» — количество микросекунд, прошедших с начала последней секунды эпохи. Думаю, понятно. Однако, так как мы указали «double» перед данной функцией, возвращать она нам будет именно «msec» и ничего более. То есть, вероятность получения одинаковых чисел настолько мала, что просто ужасть PunBB_INFO_ICQ/smile Стоит ещё учесть то, что «msec» возвращается с точностью до восьмой цифры после запятой, если мне не изменяет память. И умножая это число на 100 000 000, получаем точно целое число, без плавающей точки.

4

Re: Случайный вывод строки из файла на страницу

$i = rand(0, sizeof($banners) -1);

Присваиваем переменной «i» случайное значение от 0 до n, где «n» — количество элементов (функция «sizeof()») в массиве «banners» уменьшенное на единицу. Уменьшаем же потому, что индексация в массиве с 0.

$reklama = $banners[$i];

Присваиваем переменной «reklama» значение случайно выбранного элемента («i») массива «banners».

$reklama = str_replace ('
', '', $reklama);

Это я не просто так разделил на две строки, не подумайте. Просто так как в элементе массива может встретиться знак перевода строки, мы его удаляем с помощью функции «str_replace()». А если быть ещё точнее, мы просто заменим его на пустую строку.

echo $reklama;

Выводим полученный код на экран.

?>

Закрываем php-программу.