Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Как идентифицируется строка в txt-файле?


Автор: grIeIy 26.2.2006, 18:43
Хочу сделать так чтобы при открытии _http://site.ru/?31 скрипт вытягивал данные именно из 31-строки txt-файла. Как определяется строка в файле?

И возможно ли вообще такое сделать?

Автор: Guedda 26.2.2006, 18:48
Не хочется заморачиваться. Если нажмешь на _http://site.ru/?id=31, то будет
вот так:
Код

$fil=file("myfile.txt"); //Загружаем файл в массив
if(isset($fil[$id]))
{
  echo $fil[$id];
}
  else die("В файле нет такой строки");


Все довольно тривиально smile

Автор: Satana 26.2.2006, 18:55
Guedda, блин пока зашел опередил smile

Автор: grIeIy 26.2.2006, 23:06
здесь будет вывод на экран этой строки.

мне надо чтобы данные из этой строки вида
Код

имя|фамилия| 

вытягивались именно из этой строки, как это можно сделать?

Автор: Satana 27.2.2006, 00:24
grIeIy, ну тут как я понимаю нужно пользовать explode функцию которая разобьет строку в массив

Автор: grIeIy 27.2.2006, 07:17
Я незнаю что такое explode но я буду делать наподобие как в подобных скриптах которые вытягивают данные из файла вида |name|secondname|

Вы мне токо скажите как сделать чтобы вытяжка шла именно из 31-й строки! Используя приведённый код:
Код

$fil=file("myfile.txt"); //Загружаем файл в массив
if(isset($fil[$id]))
{
  echo $fil[$id];
}
  else die("В файле нет такой строки");

Автор: Guedda 27.2.2006, 11:59
Из 31 строки вот так будет:
Код

$fil=file("myfile.txt"); //Загружаем файл в массив
if(isset($fil[$id]))
{
  echo $fil[31]; //вот здесь будет вытаскиваться 31 строка
}
  else die("В файле нет такой строки");

Про explode...
Если у тебя строка имеет вид
Цитата

Антон|Чехов|Павлович|777-77-77

Тогда, после строки, которая вытаскивает 31 строку можешь дописать:
Код

$my_arr=explode("|", $fil[31]); //загоняем в массив строку, разбивая по |
echo "Ваше имя $my_arr[0]\nВаше отчество $my_arr[2]\n";


В общем, код должен получиться такой:
Код

$fil=file("myfile.txt"); //Загружаем файл в массив
if(isset($fil[$id]))
{
  $my_arr=explode("|", $fil[31]); //загоняем в массив строку, разбивая по |
  echo "Ваше имя $my_arr[0]\nВаше отчество $my_arr[2]\n";
}
  else die("В файле нет такой строки");

Функция explode разбивает строку по идентификатору в и загоняет каждую ячейку в массив с порядковым номером по возрастанию.
В моем примере выше будет массив выглядеть так:
Код

$my_arr[0] = "Антон";
$my_arr[1] = "Чехов";
$my_arr[2] = "Павлович";
$my_arr[3] = "777-77-77";

Автор: grIeIy 27.2.2006, 19:25
Спасибо!
Остался один вопрос:
когда я сделаю запись
Код

$fp = fopen ("bd.dat", "a");
fwrite ($fp, "$name|$pass\r\n");
fclose ($fp);

Как мне вывести на экран Номер строки в которую были записаны эти данные??

Автор: CTAPbIuMABP 27.2.2006, 19:47
ну придется наверное еще раз считать файл функцией file и посчитать все строки, последняя-1 будет искомой

Автор: Guedda 27.2.2006, 20:28
Так:
Код

$fp = fopen ("bd.dat", "a");
fwrite ($fp, "$name|$pass\r\n");
fclose ($fp);
$fd=file("bd.dat");
echo "Номер только что записанной строки: " . sizeof($fd); //если начинать с 0

Автор: grIeIy 27.2.2006, 22:57
Работает!!!
Пол часа врубался в твои коды. И всё таки врубился!

Тока есть одна трабла:
Код

sizeof($fd);

выводит следующую (несуществующую) после НУЖНОЙ строку
как эту циферку на -1 убавить?

Автор: wsr 28.2.2006, 00:11
sizeof($fd) - 1;

Автор: grIeIy 28.2.2006, 07:07
Цитата(wsr @ 28.2.2006, 00:11 Найти цитируемый пост)
sizeof($fd) - 1

пишет:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/domains/site/public_html/new_client.php on line 12

Автор: Guedda 28.2.2006, 08:31
А если так:
Код

$my=sizeof($fd);
$my2=$my-1;

Автор: grIeIy 28.2.2006, 13:01
Всё работает! Спасибо всем!
Теперь радуюсь, что написал сам свой первый скрипт smile

Автор: Satana 28.2.2006, 13:36
grIeIy, "САМ" smile

Автор: Ground 28.2.2006, 14:04
Появился ламерский вопрос, но все же:
Как организовать запись\перезапись в файл?

Автор: Guedda 28.2.2006, 14:26
Задавай вопросы конкретнее:
Код

fwrite($id_of_file, $Stroka);

Но сначала нужно открыть файл для записи.
Для этого иди http://ru.php.net/manual/en/function.fopen.php!
И после записи его нужно закрыть (хотя не обязательно)...
И снова тебе http://ru.php.net/manual/en/function.fclose.php!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)