|
|
|
| Здравствуйте! Возникли проблемы с чтением информации из текстового файла по строкам. Проблема в следующем:
Я записываю информацию в файл следующим образом...
<?
$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";
?>
|
Не подскажете, что нужно использовать? Спасибо... | |
|
|
|
|
|
|
|
для: 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>
?>
|
| |
|
|
|
|
|
|
|
для: 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>";
}
?>
|
| |
|
|
|
|
|
|
|
для: method
(21.07.2005 в 01:01)
| | Всем спасибо! Буду пробовать... | |
|
|
|
|
|
|
|
для: 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)Какая же это всётаки функция? | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: EvgenLog
(22.07.2005 в 12:37)
| | У тебя скорее попадают перевод строк /n. Попробуй избавится от него. | |
|
|
|
|
|
|
|
для: Андрюха.
(22.07.2005 в 13:13)
| | Спасибо большое... За подробный ответ! Буду пробовать. | |
|
|
|