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

Форум PHP

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

 

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

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

тема: Замена строк в текстовом файле
 
 автор: igorjok   (21.11.2008 в 15:07)   письмо автору
 
 

Есть текстовый файл. В нем надо заменить две строки неизвестной длины, к примеру 2 и 5, или 8 и 9. Как это сделать?

  Ответить  
 
 автор: Valick   (21.11.2008 в 15:24)   письмо автору
 
   для: igorjok   (21.11.2008 в 15:07)
 

Вариантов много.
Но я бы лично, открыл этот файл для чтения и ещё один для записи. Читал бы посторочно и переписывал в другой файл строки а нужные заменял бы.
Но если файл очень большой, то такой способ нерационален.
А если файл очень маленький, то можно считывать весь файл в массив (т.е. в оперативную память) и работать с массивом.

  Ответить  
 
 автор: AcidTrash   (21.11.2008 в 20:48)   письмо автору
 
   для: Valick   (21.11.2008 в 15:24)
 

А я бы хней не занимался, а использовал бы БД.
Намного перспективнее и проще.

P.S. Думаю автору в эту сторону надо смотреть, а не искать себе гемморой.

  Ответить  
 
 автор: Inviseble_Demon   (21.11.2008 в 20:26)   письмо автору
 
   для: 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);
?>

  Ответить  
 
 автор: Valick   (21.11.2008 в 20:37)   письмо автору
 
   для: Inviseble_Demon   (21.11.2008 в 20:26)
 

Ну вопервых не удалить а заменить.
Во-вторых, для одного пользователя это ещё можно* применить, а вот если это будут использовать несколько человек, то - это игра в "русскую рулетку".

  Ответить  
 
 автор: Inviseble_Demon   (21.11.2008 в 20:45)   письмо автору
 
   для: Valick   (21.11.2008 в 20:37)
 

ага сори про замену чет вылетело ))

  Ответить  
 
 автор: Inviseble_Demon   (21.11.2008 в 20:54)   письмо автору
 
   для: 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); //закончили работать с файлом
?>

  Ответить  
 
 автор: Valick   (21.11.2008 в 21:54)   письмо автору
 
   для: Inviseble_Demon   (21.11.2008 в 20:54)
 

fopen($fl,"w")

это очень опасно, надо быть на 100% уверенным что с файлом никто не работает кроме вас
тут даже блокировка не поможет, о которой кстати не надо забывать при работе с файлами.

  Ответить  
 
 автор: Inviseble_Demon   (21.11.2008 в 23:08)   письмо автору
 
   для: Valick   (21.11.2008 в 21:54)
 

В этом я с вами на все 100 согласен !

Может зделать чтото вроде как на joomla ? Но тут тоже вопрос возникает о как это с файлом зделать !?

Есть мыслишка хоть и тухлая ))

Открываем фаил -> сменяем права на фаил и ставим 000 (хотя не все хостеры поддерживают такчто лудше 111) обрабатываем фаил и возвращяем прежнии права (правда их надобыло до этого сохранить ) и переписываем фаил !

Нагруз вроде не сильный.
Метод более менее рабочий если его ктото редактирует то никто не сможет его даже открыть если не кто не работает то в путь ))

  Ответить  
 
 автор: Valick   (21.11.2008 в 23:20)   письмо автору
 
   для: Inviseble_Demon   (21.11.2008 в 23:08)
 

Нее.. права на файл менять ненадо... для этого специально придуманы блокировки.
Открываешь файл для чтения и записи (только не w), блокируешь файл, считываешь обрабатываешь и перезаписываешь, закрываешь файл... примерно так.

  Ответить  
 
 автор: Николай2357   (21.11.2008 в 23:47)   письмо автору
 
   для: igorjok   (21.11.2008 в 15:07)
 

Вы попробуйте file_put_contents()
у меня проблем пока не возникало. Если гуру подскажут, что это плохо, хотя бы будем знать

  Ответить  
Rambler's Top100
вверх

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