|
автор: Новичек (15.02.2006 в 08:57) |
|
| Здравствуйте.
Как заменить данные в текстовом файле, к примеру в файде идут данные
1234
2345
5678
6543
76543
надо к примеру заменить 2 строку на данные 8765
??? | |
|
|
|
|
|
|
|
для: Новичек
(15.02.2006 в 08:57)
| | Незнаю... | |
|
|
|
|
|
|
|
для: Новичек
(15.02.2006 в 08:57)
| | А почему именно вторую? конкретезируйте задачу. | |
|
|
|
|
|
|
|
для: Новичек
(15.02.2006 в 08:57)
| | если файл не очень большой то можно так:
<?
$arr = file($filename);
$arr[1]="8765\n";
$handler = fopen($filename,'w+');
fwrite($handler,implode("",$arr));
fclose($handler);
?>
|
| |
|
|
|
|
автор: Новичек (15.02.2006 в 11:24) |
|
|
для: Axxil
(15.02.2006 в 11:07)
| | kel911, а флудить то зачем ?
Loki 2 строка приведена для примера, а вообще то должно быть так, в форму вбивается значение которое находится в текстовом файле, на каком оно месте неизвестно, и это значение должно замениться на другое, которое также отсылается через форму.
Axxil спасибо, попробую. | |
|
|
|
|
|
|
|
для: Новичек
(15.02.2006 в 11:24)
| | тогда вот так
<?
$value1=8888;
$value2=4444;
$arr = file($filename);
foreach ($arr as $key=>$val)
{
if ($val===$value2)
$arr[$key]=$value1;
}
$handler = fopen($filename,'w+');
fwrite($handler,implode("\n",$arr));
fclose($handler);
?>
Если файл большой, то file() лучше заменить на fopen+fgets
|
| |
|
|
|
|
автор: Eugene (16.02.2006 в 01:06) |
|
|
для: Loki
(15.02.2006 в 11:39)
| | Тоесть рекомендуете считывать файл таким макаром (если он большой) ???
fgets же вроде считывает построчно...
$fd = fopen ("/tmp/inputfile.txt", "r");
while (!feof ($fd)) {
$buffer = fgets($fd);
echo $buffer;
}
fclose ($fd);
|
| |
|
|
|
|
|
|
|
для: Eugene
(16.02.2006 в 01:06)
| | При этом мы не ограничены количеством доступной оперативки. | |
|
|
|
|
автор: Новичек (16.02.2006 в 07:43) |
|
|
для: Loki
(15.02.2006 в 11:39)
| | Не работает.
Может у кого еще будут какие варианты ??? | |
|
|
|
|
|
|
|
для: Новичек
(16.02.2006 в 07:43)
| | ясный перец не работает. Файл-то небось под виндой создавали
перед сравниением вставьте
| |
|
|
|
|
автор: Новичек (16.02.2006 в 09:34) |
|
|
для: Loki
(16.02.2006 в 09:27)
| | Все равно не работает. | |
|
|
|
|
|
|
|
для: Новичек
(16.02.2006 в 09:34)
| | что именно не работает? приведите ваш код | |
|
|
|
|
автор: Новичек (16.02.2006 в 11:01) |
|
|
для: Loki
(16.02.2006 в 09:56)
| |
<?
$value1=8888;
$value2=4444;
$filename = "12.txt";
$arr = file($filename);
$val=trim($val);
foreach ($arr as $key=>$val)
{
if ($val===$value2)
$arr[$key]=$value1;
}
$handler = fopen($filename,'w+');
fwrite($handler,implode("\n",$arr));
fclose($handler);
?>
|
текстовый файл
1234
7654
98765
4444
6543
ро76
987го
|
насколько я понимаю при запуске скрипта 4444 должно сменится на 8888, но оно не меняется, только добавляет кучу квадратиков между цифрами [][][] и после каждого запуска их становится все больше и больше. | |
|
|
|
|
|
|
|
для: Новичек
(16.02.2006 в 11:01)
| |
<?
$value1=8888;
$value2=4444;
$filename = "12.txt";
$arr = file($filename);
foreach ($arr as $key=>$val)
{
$val=trim($val);
if ($val===$value2)
$arr[$key]=$value1;
}
$handler = fopen($filename,'w+');
fwrite($handler,implode("\n",$arr));
fclose($handler);
?>
|
| |
|
|
|
|
автор: Новичек (16.02.2006 в 12:08) |
|
|
для: Loki
(16.02.2006 в 11:24)
| | Тоже самое, все равно не работает. | |
|
|
|
|
|
|
|
для: Новичек
(16.02.2006 в 12:08)
| |
замените на
| |
|
|
|
|
автор: Новичек (16.02.2006 в 12:28) |
|
|
для: Loki
(16.02.2006 в 12:24)
| | Не помогло | |
|
|
|
|
|
|
|
для: Новичек
(16.02.2006 в 12:28)
| | а у меня работает. | |
|
|
|
|
|
|
|
для: Loki
(16.02.2006 в 12:29)
| | Там надо маленько подправить, и всё будет нормально работать. Нужно использовать не \n, а \r\n, если уж мы делаем trim + ещё тогда надо в массив после trim'a значения заносить. Короче, вот скрипт:
<?
$value1=8888;
$value2=4444;
$filename = "12.txt";
$arr = file($filename);
foreach ($arr as $key=>$val)
{
$val=trim($val);
if ($val==$value2)
$arr[$key]=$value1;
else
$arr[$key]=$val;
}
$handler = fopen($filename,'w+');
fwrite($handler,implode("\r\n",$arr));
fclose($handler);
?>
|
Проверил, всё работает! | |
|
|
|