Выбор случайной строки из файла

  • Автор темы pushok
  • Дата начала
P

pushok

#1
Вопрос к профи в ПХП
Я уже всю голову разбил, я начинающий - может что-то не догоняю,но я не пойму как это сделать.
Мне нужно из файла выбрать случайную строку и записать ее в отдельную переменную для дальнейшей обработки.
Файл:
word1=slovo1
word2=slovo2
word3=slovo3
...
Кусок затруднительного кода:
<?
...
$file = fopen("file.txt", "r");
$line= //со случойно выбранной строкой из файла
fclose ($file);
$list=list($word, $slovo) = split("=", $line);
...
?>
Что можно сделать с этим кодом?
Может как-то изменить файл, добавить какие-нибудь якоря.

ЗЫ. пробовал через fgets() - он читает только первую строку, а надо чтоб читал весь текст и выдавал случайную строку.
 
W

webmasta

#2
Вопрос к профи в ПХП
Я уже всю голову разбил, я начинающий - может что-то не догоняю,но я не пойму как это сделать.
Мне нужно из файла выбрать случайную строку и записать ее в отдельную переменную для дальнейшей обработки.
Файл:
word1=slovo1
word2=slovo2
word3=slovo3
...
Кусок затруднительного кода:
<?
...
$file = fopen("file.txt", "r");
$line= //со случойно выбранной строкой из файла
fclose ($file);
$list=list($word, $slovo) = split("=", $line);
...
?>
Что можно сделать с этим кодом?
Может как-то изменить файл, добавить какие-нибудь якоря.

ЗЫ. пробовал через fgets() - он читает только первую строку, а надо чтоб читал весь текст и выдавал случайную строку.



<?php

$words = file("file.txt");

shuffle($words);

$sting = explode("=", $words[0]);

$word = ereg_replace ('\n','',$sting[0]);


?>

если я правильно понял
 
K

korvin0

#3
webmasta, у тебя несколько ошибок в коде, кроме того он медленнее моего будет :angry:

Надо так:
$f = file('file.txt'); // $f - массив всех строк файла
$n = rand(0,count($f)-1); // генерируем номер случайной строки
$rstr = trim($f[$n]); // читаем эту строку и сразу убираем пробельные символы спереди и в конце
$exstr = explode('=', $rstr); // теперь $exstr === array(0=>'word1', 1=>'slovo1')

да, и если файл ооочень большой, то file() будет тормозить. Тады надо fopen, strpos и substr использовать. ну это насколько я понимаю тебе не надо, автор темы =)
 
G

GOsha

#4
Народ, смотрите на WoWeb.ru
Там этих рандомизаторов - чем хошь жуй.
 
H

Holger Dee Assuran

#5
У меня похожая проблема. Только я загружаю список данных об изображениях из MySQL.
1. Имя файла
2. Подпись картинки - если пользователь их отключил
3. Всплывающая подсказака - всплывает при наведении на картинку
4. Процент показа

На странице я вызываю функцию которая принимает список картинок, содержащий эти значения, и выводит одну картинку из списка.
Выбрать случайную картинку из набора не составляет труда. Мне же необходимо учесть при выборе картинки ее процент показа. Причем если процент равен 0 - картинка не выводится, если же равен 100 - то выводится только она.
Здесь я придерживаюсь допущения что сумма процентов показа картинок в списке равна 100.

Есть какие нибудь идеи как это реализовать? А то я уже дня три думаю - видно опыта нехватает...
 
A

aka_Kail

#6
Хмммм...
если база -Мускул, надо составить запрос..
Примерно так...

SELEKT * FROM ваша таблица WHERE procent=100 xor (SELEKT * FROM ваша таблица WHERE procent>0 and procent!=100)

Вывод должен дать или одну строку, или несколько...
колич-во затронутых строк легко узнать при помощи mysql_num_rows
Должно сработать...