Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getWord() //Возврашает слово из словаря
- {
- $FILENAME = "slovar.txt"; //Имя файла
- $LINE_DELIMITER = "n"; //Разделитель строк в файле
- $MAX_LINE_LEN = 255 + strlen($LINE_DELIMITER); //Максимальная разумная длина одной строки
- $TRIPLE_BUFFER = $MAX_LINE_LEN * 3; //Берем немного с запасом
- $fileLen = filesize($FILENAME); //Длина файла
- if (empty($fileLen) || $fileLen < $TRIPLE_BUFFER) { //На всякий случай проверим длину файла
- throw new ErrorException("Файл слишком мал");
- }
- $rnd = rand(0, $fileLen - $TRIPLE_BUFFER); //Случайная позиция для чтения
- $handle = fopen($FILENAME, "r"); //Открываем файл для чтения
- fseek($handle, $rnd); //Устанавливаем указатель в случайном месте файла
- $stream = fread($handle, $TRIPLE_BUFFER); //Читаем начиная со случайной позиции
- $lines = explode($LINE_DELIMITER, $stream); //Разбиваем текст на строки
- $lineCount = count($lines); //Считаем количество прочитанных строк
- $randomLine = ""; //Инициализируем нашу случайную строку
- $startAtLine = ($rnd !== 0) ? 1 : 0; //Пропускаем первую строку, так как она может быть обрезана
- for ($i = $startAtLine; $i < $lineCount; $i++) { //Ищем случайную строку
- if (!empty($lines[$i])) { //Пропускаем пустые строки
- $randomLine = $lines[$i]; //Ну и наконец, вот наша случайная строка
- break;
- }
- }
- return $randomLine;
- }
Add Comment
Please, Sign In to add comment