|
|
|
| Здравствуйте!
Я на этом форуме впервые. Мне нужна ваша помощь. В общем, ситуация такова:
Есть некий файл, в котором располагается, к примеру, 10 строчек с 1 словом в каждой.
Требуется функция, которая будет брать слово с этого файла и присваивать ему переменную (к примеру $slovo). Это слово будет применено в неком операторе скрипта. Этот оператор является частью тела цикла. При каждом повторении этого цикла переменной $slovo должно быть присвоено значение со второй, третий, четвертой и так далее строчки.
Помогите, пожалуйста, организовать такой процесс. Спасибо! | |
|
|
|
|
|
|
|
|
для: 502
(23.07.2011 в 23:33)
| | Спасибо за ссылку, но все ровно не могу разобраться, как седлать так, чтобы переменная с каждым повторением цикла менялась. Если можно хоть небольшой пример, буду очень благодарен :) | |
|
|
|
|
|
|
|
для: TIGRUS
(23.07.2011 в 23:22)
| | Перед циклом читате весь файл в массив функцией file(). После этого про сам файл можно забыть и работать с массивом. Соответственно, будет что-то типа
<?
$file_arr := file('dta.txt');
$num_str := count($file_arr); // чтобы не было «магических чисел»
for($i:=0; $i<=$num_str-1; $i++)
{
...
$slovo := $file_arr[$i];
...
}
?>
|
| |
|
|
|
|
|
|
|
для: Киналь
(23.07.2011 в 23:55)
| | только в том случае если файл маленький по объему, а то хостер огорчит ) | |
|
|
|
|
|
|
|
для: Valick
(24.07.2011 в 00:11)
| | TIGRUS сообщил, что строчек 10, вряд ли файл зверски большой. | |
|
|
|
|
|
|
|
для: cheops
(24.07.2011 в 00:24)
| | да тут по хорошему не мешало бы знать что делать с этой строчкой в дальнейшем, это тоже может повлиять на выбор метода | |
|
|
|
|
|
|
|
для: Valick
(24.07.2011 в 00:39)
| | А что тут ещё можно придумать, при десяти-то строчках? Не в БД же перегонять. | |
|
|
|
|
|
|
|
для: Valick
(24.07.2011 в 00:39)
| | В общем надо сделать так:
Ф-я считывания:
<?php
function read_file ()
{
???
//Здесь, наверное, нужно считать файл в массив, а потом им как-то оперировать, чтобы пр каждом
//исполнении ф-и возвращалась следующая строка из файла.
???
return $string
}
?>
|
Основная ф-я:
<?php
$variable = read_file ();
for ($i=0, i<11, i++)
{
$input->set_value_by_name('name',$variable);
}
?>
|
При каждом исполнение цикла переменной $variable должна присваиватся следующая строка с файла. | |
|
|
|
|
|
|
|
для: TIGRUS
(24.07.2011 в 15:25)
| | При исполнении всего php-файла целиком нужно использовать все десять слов или только одно, очередное? | |
|
|
|
|
|
|
|
для: Киналь
(24.07.2011 в 15:31)
| | Если я правильно понял суть вопроса, то при каждом выполнении цикла нужно только одно, очередное слово. Остальные, использованные слова уже не нужны. | |
|
|
|
|
|
|
|
для: TIGRUS
(24.07.2011 в 15:42)
| | заворачивать в функцию чтение сторки из файла не нужно
читать действительно лучше всего построчно, а не сразу в массив
чуть позже напишу код | |
|
|
|
|
|
|
|
для: Valick
(24.07.2011 в 16:18)
| | Ок, я буду очень благодарен, а то уже почти неделю копался с этим кодом :( | |
|
|
|
|
|
|
|
для: TIGRUS
(24.07.2011 в 17:46)
| |
<?php
$Resource = fopen (FILE_PATH, 'r');
while ($String = fgets ($Resource)) echo $String.'<br>';
fclose ($Resource);
?>
|
| |
|
|
|
|
|
|
|
для: TIGRUS
(24.07.2011 в 17:46)
| | слегка дополнил код от Мегагерца
<?php
$file="test.txt";
$f=fopen($file, "r+t") or die("Невозможно открыть файл");
// Блокируем файл (разделяемая блокировка)
flock($f, LOCK_SH); // ждём завершения процесса записи
// В файл теперь никто не пишет, можно читать
while ($string = fgets ($f)) $input->set_value_by_name('name',$string);
fclose ($f);
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(24.07.2011 в 21:19)
| | Спасибо. Сейчас буду пробовать... | |
|
|
|
|
|
|
|
для: TIGRUS
(24.07.2011 в 21:24)
| | Да. Работает нормально. Спасибо.
А что делать, если основная функция выглядит примерно так:
<?php
$variable = read_file ();
$variable1 = read_file_1 ();
$variable2 = read_file_2 ();
$variable3 = read_file_3 ();
for ($i=0, i<11, i++)
{
$input->set_value_by_name('name',$variable);
$input->set_value_by_name('name1',$variable1);
$input->set_value_by_name('name2',$variable2);
$input->set_value_by_name('name3',$variable3);
}
?>
|
Где для $variable1, $variable2, $variable3 (также, как и для $variable) надо считать строки с определенного файла, отдельного для каждой переменной.
Думаю, что все таки, нужно сделать отдельные ф-и для каждой переменной. Хотя, может, я и ошибаюсь... | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 00:45)
| | а почему бы об этом не спросить в первом посте?
расскажите подробнее сколько файлов нужно использовать одновременно и что именно делает функция set_value_by_name | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 00:52)
| | Смотрим ниже.... | |
|
|
|
|
|
|
|
для: Киналь
(23.07.2011 в 23:55)
| | Это := что такое? | |
|
|
|
|
|
|
|
для: Yuriev
(24.07.2011 в 13:44)
| | А, фу-ты ну-ты. Двоеточие лишнее, конечно. | |
|
|
|
|
|
|
|
для: Yuriev
(24.07.2011 в 13:44)
| | паскалевский синтаксис | |
|
|
|
|
|
|
|
для: f111
(24.07.2011 в 21:54)
| | В данном случае МЭКовский) Последнее время для ПЛК пишу, а там свой язык (стандарта МЭК). | |
|
|
|
|
|
|
|
для: TIGRUS
(23.07.2011 в 23:22)
| | Функцию set_value_by_name привел просто для примера, ибо первая впала мне в глаза в одном скрипте.
Сколько файлов нужно будет использовать неизвестно. Было бы хорошо сделать универсальную функцию и потом, если нужно, копировать ее куда надо, меняя при этом только имя самой ф-и, имена переменных и путь к файлу.
Сам скрипт с функциями можно сделать отдельно, чтобы потом его подключать.
Основной скрипт выглядит примерно так:
<?php
$variable = read_file ();
$variable1 = read_file_1 ();
$variable2 = read_file_2 ();
$variable3 = read_file_3 ();
for ($i=0, i<11, i++)
{
//some code
$input->set_value_by_name('name',$variable);
//some code
$input->set_value_by_name('name1',$variable1);
//some code
$input->set_value_by_name('name2',$variable2);
//some code
$input->set_value_by_name('name3',$variable3);
//some code
}
//some code
?>
|
| |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 01:21)
| | нет, так дело не пойдет, лично я не изобретатель "кремлевских таблеток"
я всегда по максимуму делаю код универсальный, но...
там где нет логики - нет кода | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 01:43)
| | Ну я тогда не понимаю, как еще, более логично, решить мою проблему...
Если не трудно, подкинь, пожалуйста, какую-нить хорошую идейку ;)
Задача ведь не очень сложная...
Надо сделать так, чтобы при каждом исполнении цикла переменным $variable, $variable1, $variable2, $variable3 было присвоено слово с очередных строчек файлов.
зы. спасибо! | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 02:06)
| | Задача ведь не очень сложная...
да поймите вы, задача не сложная... её попросту нет
__
возьмите лопату и пойдите выкопайте во дворе три универсальных ямы, а еще лучше неограниченное количество универсальных ям | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 01:21)
| | Так вам нужно, значит, не одну строку за раз, а несколько?
Тогда можно делать так, как я предлагал в начале (через file()), и брать несколько нужных элементов массива. Но ещё в дополнительном файле нужно тогда хранить номер следующего элемента массива (то есть номер строки, с которой нужно начать в следующий раз). | |
|
|
|
|
|
|
|
для: Киналь
(25.07.2011 в 08:45)
| | человеку нужно одну строку за раз, но из разных файлов (пять, десять, сто и тд) количество которых заранее неизвестно и ничем не ограничено
___
я могу написать функцию, которая открывала бы все файлы в определенной директории, потом читать из них построчно, но если возникает такая задача, значит что-то не так с условием, тут определенно нужен другой подход | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 09:24)
| | Вот такая функция мне и нужна.
Задача - написать что-то похожее на генератор слоганов. Первое слово вставляется с одного файла, второе со второго, третье с третьего и так далее. НО, слова должны вставляться по очереди, т.е. по первому слову с каждого файла, потом по второму, по третьему и т.д.
Эти действия должны повторятся ровно столько раз, сколько задано в цикле. Т.е. если цикл с таким условием ($i=0, i<10, i++), то должно сгенерироваться 10 разных слоганов.
Так, думаю, будет более понятно. Слова должны считываться именно по порядку, а не рандомно. Знаю, что рандомно было бы более удобно для генерации слоганов, но все же, нужно по порядку. | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 13:26)
| | так вы спамер мил человек)) то-то все так завуалированно | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 13:39)
| | Нет, не спаммер. Просто хотел создать авторегистратор для одного сайта. | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 13:57)
| | типа вот так
<?php
$d="data";
$dir=getcwd()."/".$d;
// Открыть заведомо существующий каталог и начать считывать его содержимое
if(is_dir($dir)){
if($dh = opendir($dir)){
while(($file = readdir($dh)) !== false){
if(is_file($dir."/".$file)){
$f[basename($file,".txt")]=fopen($dir."/".$file,"r+t") or die ("Невозможно открыть файл :".$file);
}
}
closedir($dh);
}
}
for($i=0;$i<11;$i++){
foreach($f as $key=>$value){
echo $string = fgets ($value)." ";
}
echo "<br />";
}
?>
|
__
после копирования доработать напильником :) | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 13:59)
| | Спасибо. Сейчас буду пробовать. Но этих файлов не настолько много, чтобы открывать целый каталог с ними :) | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 14:05)
| | так проще, просто кинул файл в каталог и скрипт уже работает с ним | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 09:24)
| | Ах вот оно что. Как всё сложно-то) В самом деле, уважаемый TIGRUS, опишите, пожалуйста, свою задачу полностью. А то уж как-то слишком заковыристо получается. | |
|
|
|
|
|
|
|
для: Киналь
(25.07.2011 в 13:26)
| | Ладно, сейчас распишу полностью.
Есть скрипт, который заполняет формы на сайте при регистрации. Некоторые из них (логин, пароль, имя, фамилия, дата рождения и т.п.) хотелось бы заполнить так, чтобы они не дублировали один одного, т.е. чтобы не было аккаунтов с одинаковыми именами, фамилиями и т.п., поэтому и решил их брать с заранее подготовленного файла.
Целый скрипт уже почти готов, осталось только сделать считывание логинов, паролей, имен и фамилий с файла.
Если кто-то поможет мне сделать то, что я прошу, я скину ему свой скрипт, если, конечно, нужно) | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 14:01)
| | Вы определенно спамер :)))) | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 14:33)
| | Да нет. Просто регистрировать 40 аккаунтов немного долго... | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 15:01)
| | вот вот, зачем честному человеку (не спамеру) регистрировать 40 аккаунтов)))
да ладно каюсь,я и не такое спамерам помогал
но там задача уж больно интересная была)
__
не обращайте внимания, просто настроение хорошее ) ... (еще никто не испортил) | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 15:05)
| | Спасибо за помощь.
Это типо как приглашения, чтобы добыть определенный статус на сайте.
И еще такой вопрос есть. Просто интересно.
Возможно ли средствами пхп подключится к удаленному рабочему столу? :D | |
|
|
|
|
|
|
|
для: TIGRUS
(25.07.2011 в 15:21)
| | Возможно ли средствами пхп подключится к удаленному рабочему столу? :D
о ужас!!! вы еще и хакер))) нет невозможно такое
хотя есть exec, а с ним можно все что угодно | |
|
|
|
|
|
|
|
для: Valick
(25.07.2011 в 15:26)
| | Про екзец знаю, спасибо.
Я не хакер. Просто интересно, на сколько широко можно использовать пхп :) | |
|
|
|