Выбор случайной строки из файла
Вопрос к профи в ПХП
Я уже всю голову разбил, я начинающий - может что-то не догоняю,но я не пойму как это сделать.
Мне нужно из файла выбрать случайную строку и записать ее в отдельную переменную для дальнейшей обработки.
Файл:
word1=slovo1
word2=slovo2
word3=slovo3
...
Кусок затруднительного кода:
<?
...
$file = fopen("file.txt", "r");
$line= //со случойно выбранной строкой из файла
fclose ($file);
$list=list($word, $slovo) = split("=", $line);
...
?>
Что можно сделать с этим кодом?
Может как-то изменить файл, добавить какие-нибудь якоря.
ЗЫ. пробовал через fgets() - он читает только первую строку, а надо чтоб читал весь текст и выдавал случайную строку.
Я уже всю голову разбил, я начинающий - может что-то не догоняю,но я не пойму как это сделать.
Мне нужно из файла выбрать случайную строку и записать ее в отдельную переменную для дальнейшей обработки.
Файл:
word1=slovo1
word2=slovo2
word3=slovo3
...
Кусок затруднительного кода:
<?
...
$file = fopen("file.txt", "r");
$line= //со случойно выбранной строкой из файла
fclose ($file);
$list=list($word, $slovo) = split("=", $line);
...
?>
Что можно сделать с этим кодом?
Может как-то изменить файл, добавить какие-нибудь якоря.
ЗЫ. пробовал через fgets() - он читает только первую строку, а надо чтоб читал весь текст и выдавал случайную строку.
int rand(int max, int min);
Собственно это функция рандом можно поступить что-то типа того
$file = fopen("file.txt", "r");
$FCount = count($file);
rand($FCount, 0) оно тебе сгенерирует случайное число в пределах длинны файла..
Далее думаю справишся..
Собственно это функция рандом можно поступить что-то типа того
$file = fopen("file.txt", "r");
$FCount = count($file);
rand($FCount, 0) оно тебе сгенерирует случайное число в пределах длинны файла..
Далее думаю справишся..
Ну или закачать файл в массив и рандомом взять нужный индекс-строку
Или юзать БД вместо файла и рандомом взять нужное
или юзать структурированный файл и тогда сииком установить на нужную рандомную запись и считать.
Или юзать БД вместо файла и рандомом взять нужное
или юзать структурированный файл и тогда сииком установить на нужную рандомную запись и считать.
У меня из файла не получается, получилось через массив
<?
...
$q=array("word1=slovo1",word2=slovo2,...);/* Тобишь одномерный массив без индексов, а в значении сочетание - потом это сочетание разбивал черезз split()*/
if (!isset($line))
{
$line = rand(1,count($q)) - 1; // Выбираем элемент массива случайно;
}
$str = $qw[$line];// $str - то случайная строка/сочетание"wordX=slovoX" из массива $qw;
$list=list($qwest, $word) = split("=", $str);
...
?>
Но хотелось бы брать из файла.
Вот так я уже испробывал,
[quote="Duncon"]
$file = fopen("file.txt", "r");
$FCount = count($file);
rand($FCount, 0)
но тогда какая-то бяка вот тут выступает,
$list=list($qwest, $word) = split("=", $str);
и дальше через переменные $qwest, $word что то не то выходит.
ЗЫ: Может кто знает, как можно обновлять страницы чтоб была при этом была и генерация другой строки?
Пробовал $PHP_SELF, но она страницу обновляет, а при этом новую строку не генерирует.
И получается страница обновилась (все данные стерлись, а $word (и $slovo) не изменились.
Может я не умею ее готовить?
<?
...
$q=array("word1=slovo1",word2=slovo2,...);/* Тобишь одномерный массив без индексов, а в значении сочетание - потом это сочетание разбивал черезз split()*/
if (!isset($line))
{
$line = rand(1,count($q)) - 1; // Выбираем элемент массива случайно;
}
$str = $qw[$line];// $str - то случайная строка/сочетание"wordX=slovoX" из массива $qw;
$list=list($qwest, $word) = split("=", $str);
...
?>
Но хотелось бы брать из файла.
Вот так я уже испробывал,
[quote="Duncon"]
$file = fopen("file.txt", "r");
$FCount = count($file);
rand($FCount, 0)
но тогда какая-то бяка вот тут выступает,
$list=list($qwest, $word) = split("=", $str);
и дальше через переменные $qwest, $word что то не то выходит.
ЗЫ: Может кто знает, как можно обновлять страницы чтоб была при этом была и генерация другой строки?
Пробовал $PHP_SELF, но она страницу обновляет, а при этом новую строку не генерирует.
И получается страница обновилась (все данные стерлись, а $word (и $slovo) не изменились.
Может я не умею ее готовить?
$list=list($qwest, $word) = split("=", $str);
Такая постоновка условия не может работать..
Не имей привычки выкладывать кусочек кода он не дает представление ни о чем..
ps А может стоит вначале учебничек почитать??? Ошибок синтаксиса не будет.. благо их много сей час развелось..
Такая постоновка условия не может работать..
Не имей привычки выкладывать кусочек кода он не дает представление ни о чем..
ps А может стоит вначале учебничек почитать??? Ошибок синтаксиса не будет.. благо их много сей час развелось..
[quote="Duncon"]
$list=list($qwest, $word) = split("=", $str);
Такая постоновка условия не может работать..
Извини Я немного перепутал при копировании
Правильно:
$list=list($word, $slovo) = split("=", $str);
А дальше уже идет работа с переменными $word и $slovo не затрагивая вышеуказанные переменные.
Но почему такая постановка условия не может работать ?
PS. [quote="Duncon"]
ps А может стоит вначале учебничек почитать??? Ошибок синтаксиса не будет.. благо их много сей час развелось..
Я не понял. Если не трудно по подробней. Я что то не так делаю? Тогда можно ссылочку на учебник где это описано(я лично не нашол - несколько перерыл) или объяснить по конкретней.
Как сделать чтоб страница обновлялась полностью?
$list=list($qwest, $word) = split("=", $str);
Такая постоновка условия не может работать..
Извини Я немного перепутал при копировании

$list=list($word, $slovo) = split("=", $str);
А дальше уже идет работа с переменными $word и $slovo не затрагивая вышеуказанные переменные.
Но почему такая постановка условия не может работать ?
PS. [quote="Duncon"]
ps А может стоит вначале учебничек почитать??? Ошибок синтаксиса не будет.. благо их много сей час развелось..
Я не понял. Если не трудно по подробней. Я что то не так делаю? Тогда можно ссылочку на учебник где это описано(я лично не нашол - несколько перерыл) или объяснить по конкретней.
Как сделать чтоб страница обновлялась полностью?
$list = list($word, $slovo) = split("=", $str);
Перевожу:
Переменная $list приравнивается нескольким значениям каждое из которых в свою очередь приравниваються порезанным значениям из строки $str.
Собственно на мой взгляд это и есть ошибка синтаксиса двойное приравнивание..
list($word, $slovo) = split("=", $str);
Далее если тебе нужно загнать все это в массив
$list ['word'] = $word;
$list ['slovo'] = $slovo;
или
$list [] = $word;
$list [] = $word;
зависит от потребностей, есть еще или или или (читай про массивы в учебниках)
ну и если операция циклическая не забудь после каждого круга очищать массив, иначе к нему каждый раз будут пребавляться еще по 2 значения
unset($list);
Как сделать чтоб страница обновлялась полностью?
Зависит от поставленной задачи я ее не знаю ибо кто-то жмет полный кусок кода при этом не объясняя что нужно..
ps Основы синтаксиса есть в каждом учебнике..
Перевожу:
Переменная $list приравнивается нескольким значениям каждое из которых в свою очередь приравниваються порезанным значениям из строки $str.
Собственно на мой взгляд это и есть ошибка синтаксиса двойное приравнивание..
list($word, $slovo) = split("=", $str);
Далее если тебе нужно загнать все это в массив
$list ['word'] = $word;
$list ['slovo'] = $slovo;
или
$list [] = $word;
$list [] = $word;
зависит от потребностей, есть еще или или или (читай про массивы в учебниках)
ну и если операция циклическая не забудь после каждого круга очищать массив, иначе к нему каждый раз будут пребавляться еще по 2 значения
unset($list);
Как сделать чтоб страница обновлялась полностью?
Зависит от поставленной задачи я ее не знаю ибо кто-то жмет полный кусок кода при этом не объясняя что нужно..
ps Основы синтаксиса есть в каждом учебнике..
$list = list() = split("=", $str);
Ну не знаю, у меня строка работает и свободно выдает $word и $slovo на дальнейшую обработку.
А случайный выбор строк из файла не получается - я сделал из массива - все поканало.
ЗЫ А страницы обновляю через
<?
if (empty($_GET['refr']) and $_GET['refr']==0)
{
...весь скрипт...
}
elseif (!empty($_GET['refr']) and $_GET['refr']==0)
print '
<a href="file.php?refr=0">Ссылка на скрипт</a>';
?>
Первая строка нареканий не вызывает все работает отлично, но последняя не работает (она должна при открытии скрипта ввыводить ссылку на него и при нажатии на ссылку переходить к выполнению скрипта)
Если я понятно выражаюсь, объясните, пожалуйста, правилен ли синтаксис и вобще возможно ли такое построение?
Ну не знаю, у меня строка работает и свободно выдает $word и $slovo на дальнейшую обработку.
А случайный выбор строк из файла не получается - я сделал из массива - все поканало.
ЗЫ А страницы обновляю через
<?
if (empty($_GET['refr']) and $_GET['refr']==0)
{
...весь скрипт...
}
elseif (!empty($_GET['refr']) and $_GET['refr']==0)
print '
<a href="file.php?refr=0">Ссылка на скрипт</a>';
?>
Первая строка нареканий не вызывает все работает отлично, но последняя не работает (она должна при открытии скрипта ввыводить ссылку на него и при нажатии на ссылку переходить к выполнению скрипта)
Если я понятно выражаюсь, объясните, пожалуйста, правилен ли синтаксис и вобще возможно ли такое построение?
Ну спорить не буду не проверял, может такая конструкция и работает неким чудесным способом..
ЗЫ А страницы обновляю через
Это всеголишь проверка переменной,
Читаю:
Если пустая переменная refr и она докучи равна нулю..
Будет ли такая форма работать??
if empty($_GET['refr']) {
die('
<a href="file.php?refr=0">Ссылка на скрипт</a>');
} else {
...............
}
Условие данное может плавать в зависимости от твоих задач, я написал для 2 условий переменная отсутствует ли присутствует чему равна не важно..
ЗЫ А страницы обновляю через
Это всеголишь проверка переменной,
Читаю:
Если пустая переменная refr и она докучи равна нулю..
Будет ли такая форма работать??
if empty($_GET['refr']) {
die('
<a href="file.php?refr=0">Ссылка на скрипт</a>');
} else {
...............
}
Условие данное может плавать в зависимости от твоих задач, я написал для 2 условий переменная отсутствует ли присутствует чему равна не важно..
if empty($_GET['refr']) {
die('
<a href="file.php?refr=0">Ссылка на скрипт</a>');
} else {
...............
}
Спасибо. Попробую так. Потом отпишу.
die('
<a href="file.php?refr=0">Ссылка на скрипт</a>');
} else {
...............
}
Спасибо. Попробую так. Потом отпишу.