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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как удалить конкретную строку из файла?

Сообщения:  [1-9] 

 
 автор: FiX   (16.10.2005 в 11:07)   письмо автору
 
   для: $OMEGA   (15.10.2005 в 16:16)
 


<?php
$delstr 
"$realname|^^|$download|^^|$hrefname|^^|$typename"# строка, которую нужно удалить
$delstr .= "\r\n"# добавляем символы переноса строки
$delfile "sound/$dir/data.dat"# имя обрабатываемого файла
$deltext=file($delfile);
$open=fopen($delfile"w");
for(
$i=0$i<count($deltext); $i++)
   {
      if(
$deltext[$i] != $delstr) {
      
fwrite($open,$deltext[$i]);
      }
   }
fclose($open); ?>

Когда-то этот скрипт работал отлично. но когда я во время тестирования поудалял штук 8 файлов, скрипт перестал работать. Что только я не делал, а строки он не удаляет... В чем может быть дело? Может, кто знает :|

   
 
 автор: $OMEGA   (15.10.2005 в 16:16)   письмо автору
 
   для: FiX   (15.10.2005 в 13:46)
 

скрипту нужен порядковый номер строки, а не её содержание

   
 
 автор: FiX   (15.10.2005 в 13:46)   письмо автору
 
   для: DDK   (11.10.2005 в 16:16)
 

Последний скрипт работает отлично, спасибо! Вот только тсроки, типа

10.10.2005|^^|photo.jpg 

он не удаляет... Почему? Странно все это...

   
 
 автор: DDK   (11.10.2005 в 16:16)   письмо автору
 
   для: Alexx   (10.10.2005 в 20:44)
 

Что-то я не понял вот этого учстка кода:

<?
...
if((
$i+1)!=$line){fwrite($open,$file[$i]);}
...
?>

а именно if(($i+1)!=$line)...
Может так:

<?
...
if(
$file[$i] != $line){fwrite($open,$file[$i]);}
...
?>

И ещё - на сколько мне не измениет память, при считывании файла в массив символы перевода каретки и переноса строки никуда не деваются... Соотв строку объявления переменной $line нужно дополнить так:

<?
$line
="1"# строка, которую нужно удалить 
$line .= "\r\n"# добавляем символы переноса строки


Вот по-этому у вас этот скрипт и не работал. Ибо из-за отсутствия этих символов (\r\n) строки и не совпадали при сравнении.

Таким образом конечный код у нас таков:

<? 
$line 
"1"# строка, которую нужно удалить 
$line .= "\r\n"# добавляем символы переноса строки
$filename "my_file.txt"# имя обрабатываемого файла
$file=file($filename); 
$open=fopen($filename"w"); 

   for(
$i=0$i<count($file); $i++) 
   { 
      if(
$file[$i] != $line){fwrite($open,$file[$i]);}
   } 

fclose($open); 
?> 

Скрипт работает и выполняет свою функцию, всё проверил. Удачи !

   
 
 автор: FiX   (11.10.2005 в 13:30)   письмо автору
 
   для: Alexx   (10.10.2005 в 20:44)
 

на счет этого скрипта - я уже пробовал его, но ничего не получилось :( Я в инете откопал такой же скрипт... А другие попробую :)

   
 
 автор: Alexx   (10.10.2005 в 20:44)   письмо автору
 
   для: cheops   (10.10.2005 в 20:23)
 


<?
$line
="1"# строка, которую нужно удалить

$file=file("my_file.txt");
$open=fopen("my_file.txt","w");

   for(
$i=0;$i<count($file);$i++)
   {
      if((
$i+1)!=$line){fwrite($open,$file[$i]);}
   }

fclose($open); 
?> 

   
 
 автор: cheops   (10.10.2005 в 20:23)   письмо автору
 
   для: FiX   (10.10.2005 в 19:47)
 

Для этого можно применить следующий скрипт
<?php
  
// Имя файла
  
$filename "DATA.DAT";
  
// Разбиваем содержимое массива на отдельные строки
  // при помощи функции file(), которая возвращает массив,
  // каждый элемент которого содержит строку файла
  
$arr file($filename);
  
// Удаляем третью строку
  
unset($arr[2]);
  
// Перезаписываем содержимое файла text.txt
  
$fd fopen($filename"w");
  if(
$fd)
  {
    
fwrite($fd,implode("",$arr));
    
fclose($fd);
  }
?>

   
 
 автор: DDK   (10.10.2005 в 19:55)   письмо автору
 
   для: FiX   (10.10.2005 в 19:47)
 

Сгрузить файл в массив при помощи ф-ции file(); (одна строка - один элемент массива получится), а там уже сообразишь, что с этим тебе дальше надо будет делать.

   
 
 автор: FiX   (10.10.2005 в 19:47)   письмо автору
 
 

Есть файл DATA.DAT; там есть следующие записи:

10/10/2005|^^|001.jpg
10/10/2005|^^|002.jpg
09/10/2005|^^|003.jpg
08/10/2005|^^|004.jpg и т.д.


Как удалить из этого файла строку? Допустим, надо удалить строку 9/10/2005|^^|003.jpg. Как это можно сделать? Пробовал и по номерам строк, и так, и сяк... Без помощи зачем-то не получается : / ...

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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