БлогNot. JQuery: выводим случайную строку из файла с заданной вероятностью

JQuery: выводим случайную строку из файла с заданной вероятностью

Например, при заданной вероятности 50% случайная строка будет выведена примерно при половине запусков скрипта, а в остальных случаях предназначенный для вывода строки элемент HTML останется пустым.

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

Предполагается, что к файлу HTML подключён JQuery и код выполняется на локальном или удалённом сервере.

Вот такой порядок действий подойдёт для этой задачи.

1. Создаём в разметке HTML элемент, куда будет выводиться строка, например:

<p id="myElement"></p>

2. По нужному событию или из нужной функции Javascript вызываем эту функцию:

function loadRandomString() {
 $('#myElement').load ('random.php', function (response, status, xhr) {
  if (status == "error") {
   var msg = "Error: ";
   $("#myElement").html( msg + xhr.status + " " + xhr.statusText);
  }
 }); 
}

После отладки скрипта функцию можно упростить до вида

 $('#myElement').load ('random.php', function (response, status, xhr) {
  if (status == "error") { $("#myElement").html("&nbsp;"); }
 });

Здесь при ошибке в myElement просто пишется неразрывный пробел &nbsp; ("совсем пустую" строку не нужно, чтобы элемент HTML, куда выводятся данные, не "пропадал" визуально).

3. В текущей папке (можно, конечно, и в другой) есть файл random.php, который читает текстовый файл на сервере и выбирает оттуда случайную строчку, в простейшем случае так:

<?php
 $prob = 0.50;
 $number = mt_rand() / mt_getrandmax();
 if ($number > $prob) {
  echo '&nbsp;'; exit;
 }
 $filename = 'text.txt';
 $data = @file ($filename);
 if ($data === FALSE) {
  echo 'File reading error'; exit;
 }
 echo $data[array_rand($data)];
?>

Настройка $prob отвечает за вероятность, с которой будет возвращена строка, её значение должно принадлежать интервалу значений ]0;1[

Следует понимать, что для файлов с большим количеством строк такой подход не годится, их можно, конечно, читать построчно, но это чревато нагрузкой на сервер, так что лучше использовать для хранения данных базу MySQLi.

4. Кладём в ту же папку файл text.txt с абсурдными и устрашающими короткими фразами, которые будут время от времени появляться :) Фразы пишем или вставляем по одной в строке.

Вот сборка скрипта для работы на локальном или удалённом хосте, все файлы в архиве - в кодировке Юникода UTF-8.

 Скачать этот скрипт в архиве .zip, папка уже создана внутри архива (18 Кб)

06.06.2019, 22:06 [2034 просмотра]


теги: textprocessing javascript html random php jquery

показать комментарии (2)