Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Чтение файла по строкам
 
 автор: EvgenLog   (20.07.2005 в 23:08)   письмо автору
 
 

Здравствуйте! Возникли проблемы с чтением информации из текстового файла по строкам. Проблема в следующем:
Я записываю информацию в файл следующим образом...

<?
$var_1 
$_POST['var_1'];
$var_2 $_POST['var_2'];
$write_str "<1>$var_1<1>\n<2>$var_2<2>"/*Значение каждой послед. переменной записывается в новую строку.*/
$file fopen ("file.txt""w+"); //Т.е. создаётся новый файл, при запуске скрипта.
fputs ($file$write_str);
?>

Затем, мне нужно считать информацию из файла и каждой строке присвоить теже имена переменных...
Т.е., допустим:

<?
$var_1 
"Name";
$var_2 "Name_1";
?>

Тогда в файл запишется:

<1>Name<1> - на первой строке.
<2>Name_1<2> - на второй строке.

Тепрерь нужно прочитать файл и получить следующее:

<?
$var_1 
"Name";
$var_2 "Name_1";
?>

Не подскажете, что нужно использовать? Спасибо...

   
 
 автор: Akira   (20.07.2005 в 23:36)   письмо автору
 
   для: EvgenLog   (20.07.2005 в 23:08)
 

Используйте file() она считывает каждую строку в эл. массива т.е. каждая строка будет доступна в массиве.

<? 
$var_1 
$_POST['var_1']; 
$var_2 $_POST['var_2']; 
$write_str "<1>$var_1<1>\n<2>$var_2<2>"/*Значение каждой послед. переменной записывается в новую строку.*/ 
$file fopen ("file.txt""w+"); //Т.е. создаётся новый файл, при запуске скрипта. 
fputs ($file$write_str); 
?>



<?
$file 
file('file.txt');
$var_1 $file['0']; // Содержит <1>$var_1<1>
$var_2 $file['1']; // Содержит <2>$var_2<2>
?>

   
 
 автор: method   (21.07.2005 в 01:01)   письмо автору
 
   для: Akira   (20.07.2005 в 23:36)
 

Тепрерь нужно прочитать файл и получить следующее:
<?
$var_1 = "Name";
$var_2 = "Name_1";
?>
Не подскажете, что нужно использовать?


А так не подойдёт?

<?php
error_reporting
(0);
$fp file("file.txt");
for (
$i 0$i count($fp); $i++){
print 
"<center>";
print 
nl2br($fp[$i]);
print 
"</center>";
}
?>

   
 
 автор: EvgenLog   (21.07.2005 в 11:30)   письмо автору
 
   для: method   (21.07.2005 в 01:01)
 

Всем спасибо! Буду пробовать...

   
 
 автор: EvgenLog   (22.07.2005 в 12:37)   письмо автору
 
   для: EvgenLog   (21.07.2005 в 11:30)
 

Ок! С чтением разобрался Только вот ещё вопрос возник:
Допустим прочитан файл:

<?
$file 
file ("file.txt");
$var_1 $file['0'];
$var_2 $file['1'];
?>

А до этого данный файл был записан, как показано несколькими постами выше. (по строкам)
Теперь я пытаюсь сравнить значения вновь прислынных переменных $var_1 и $var_2 со значениями, которые ранее были записаны в файл с этих же переменных :

<?
if ($file['0'] = $var_1&&$file['1'] = $var_2)
    {
        
Действие_1
    
}
else
    {
        
Действие_2
    
}
?>

И вот, не работает... Если писать "==", то даже если переменные совпадают, всё равно выполняется "Действие_2". А если оставить так, то хоть что ты присылай всё равно правильно...
Я где-то видел функцию, которая сравнивает файлы... Но только не помню где... Но ведь можно и так...
Вобщем, вопросы:
1)Почему не работает редложенным образом?
2)Какая же это всётаки функция?

   
 
 автор: cheops   (22.07.2005 в 13:10)   письмо автору
 
   для: EvgenLog   (22.07.2005 в 12:37)
 

1.Нет, так сравнивать нельзя - нужно как минимум использовать ==, а ещё лучше ===. При извлечении информации из файла в строках часто остаются невидимые символы вроде \r, от Windows-кого перевода строк \r\n, поэтому переменные следует пропускать через функцию trim() http://www.softtime.ru/dic/id_dic=78&id_group=1
<?php
if (trim($file['0']) == trim($var_1) && trim($file['1']) == trim($var_2))
    {
        
Действие_1
    
}
else
    {
        
Действие_2
    
}
?>

2. При сравнении файлов или строк, обычно вычисляют их хэш-код при помощи аглоритма md5 - это код уникален для каждой строки, поэтому если коды совпадают это одинаковые файлы.
Файлы сравнивают при помощи функции md5_file() http://www.softtime.ru/dic/id_dic=32&id_group=1
<?php
  
if(md5_file("имя_первого_файла") == md5_file("имя_второго_файла"))
  {
     echo 
"Файлы идентичны";
  }
  else
  {
     echo 
"Файлы различаются";
  }
?>

Для сравнения строк предназначена функция md5() http://www.softtime.ru/dic/id_dic=33&id_group=1

   
 
 автор: Андрюха.   (22.07.2005 в 13:13)   письмо автору
 
   для: EvgenLog   (22.07.2005 в 12:37)
 

У тебя скорее попадают перевод строк /n. Попробуй избавится от него.

   
 
 автор: EvgenLog   (22.07.2005 в 13:18)   письмо автору
 
   для: Андрюха.   (22.07.2005 в 13:13)
 

Спасибо большое... За подробный ответ! Буду пробовать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования