|
|
|
| Есть текстовый файл. В нем надо заменить две строки неизвестной длины, к примеру 2 и 5, или 8 и 9. Как это сделать? | |
|
|
|
|
|
|
|
для: igorjok
(21.11.2008 в 15:07)
| | Вариантов много.
Но я бы лично, открыл этот файл для чтения и ещё один для записи. Читал бы посторочно и переписывал в другой файл строки а нужные заменял бы.
Но если файл очень большой, то такой способ нерационален.
А если файл очень маленький, то можно считывать весь файл в массив (т.е. в оперативную память) и работать с массивом. | |
|
|
|
|
|
|
|
для: Valick
(21.11.2008 в 15:24)
| | А я бы хней не занимался, а использовал бы БД.
Намного перспективнее и проще.
P.S. Думаю автору в эту сторону надо смотреть, а не искать себе гемморой. | |
|
|
|
|
|
|
|
для: igorjok
(21.11.2008 в 15:07)
| | <?
$line='1'; # строка, которую нужно удалить
$file_open='my_file.txt'; # путь до редоктируемого файла файла
$file=file("$file_open");
$open=fopen("$file_open","w");
for($i=0;$i<count($file);$i++)
{
if(($i+1)!=$line){fwrite($open,$file[$i]);}
}
fclose($open);
?> | |
|
|
|
|
|
|
|
для: Inviseble_Demon
(21.11.2008 в 20:26)
| | Ну вопервых не удалить а заменить.
Во-вторых, для одного пользователя это ещё можно* применить, а вот если это будут использовать несколько человек, то - это игра в "русскую рулетку". | |
|
|
|
|
|
|
|
для: Valick
(21.11.2008 в 20:37)
| | ага сори про замену чет вылетело )) | |
|
|
|
|
|
|
|
для: igorjok
(21.11.2008 в 15:07)
| | Замена строки в файле:
<?
$fl = "test.dat"; // файл из которого удаляем строку
$line = 3;// строка
$rep = "строка"; //на что заменить
$file = file($fl); //загоняем файл в массив $file
$count = count($file); //подсчитываем количество строк
$fp = fopen($fl,"w");//очищаем файл
for($i=0;$i<$count;$i++) //создаём цикл, кол-во оборотов равно количиству строк в файле
{
if($i!=$line-1)
{
fwrite($fp,$file[$i]);
}
else
{
fwrite($fp,$rep."n");
echo "Строка ".$line." заменена.";
}
}
fclose($fp); //закончили работать с файлом
?>
|
| |
|
|
|
|
|
|
|
для: Inviseble_Demon
(21.11.2008 в 20:54)
| |
это очень опасно, надо быть на 100% уверенным что с файлом никто не работает кроме вас
тут даже блокировка не поможет, о которой кстати не надо забывать при работе с файлами. | |
|
|
|
|
|
|
|
для: Valick
(21.11.2008 в 21:54)
| | В этом я с вами на все 100 согласен !
Может зделать чтото вроде как на joomla ? Но тут тоже вопрос возникает о как это с файлом зделать !?
Есть мыслишка хоть и тухлая ))
Открываем фаил -> сменяем права на фаил и ставим 000 (хотя не все хостеры поддерживают такчто лудше 111) обрабатываем фаил и возвращяем прежнии права (правда их надобыло до этого сохранить ) и переписываем фаил !
Нагруз вроде не сильный.
Метод более менее рабочий если его ктото редактирует то никто не сможет его даже открыть если не кто не работает то в путь )) | |
|
|
|
|
|
|
|
для: Inviseble_Demon
(21.11.2008 в 23:08)
| | Нее.. права на файл менять ненадо... для этого специально придуманы блокировки.
Открываешь файл для чтения и записи (только не w), блокируешь файл, считываешь обрабатываешь и перезаписываешь, закрываешь файл... примерно так. | |
|
|
|
|
|
|
|
для: igorjok
(21.11.2008 в 15:07)
| | Вы попробуйте file_put_contents()
у меня проблем пока не возникало. Если гуру подскажут, что это плохо, хотя бы будем знать | |
|
|
|