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

Форум PHP

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

 

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

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

тема: Работа с текстовыми файлами в PHP
 
 автор: magpro   (26.04.2007 в 20:16)   письмо автору
 
 

В общем такая вот проблема:

Есть текстовый файл.

Внём через Энтер написанны слова.

Как мне через скрипты в ПХП удалить одну из строк и сохранить этот же фаил.

Пример:
файл text.txt

Вода
Земля
Небо
Дождь
Снег


Надо сделать:

Вода
Земля
Дождь
Снег

В общем вот так.

Заранее спасибо.

   
 
 автор: bronenos   (26.04.2007 в 21:48)   письмо автору
 
   для: magpro   (26.04.2007 в 20:16)
 

<?php
// имя файла и имя для удаления
$name 'names.txt';
$delete 'Борис';

// читаем
$file file ($name);

// удаляем
foreach ($file as $k=>$v)
{
  if (
trim($v) == $delete)
    unset (
$file[$k]);
}

// пишем обратно
$fp fopen ($name'w');
fwrite ($fpimplode (''$file));
fclose ($fp);
?>

   
 
 автор: FroNiTy   (27.04.2007 в 06:30)   письмо автору
 
   для: magpro   (26.04.2007 в 20:16)
 

<?php
// имя файла и имя для удаления
$name 'names.txt';
$delete 'Дождь';

// читаем
$file file_get_contents($name);

// удаляем
$file str_replace("$delete\r\n",'',$file); // Первый вариант
//$file=preg_replace("/($delete)([\r\n]+)/i","",$file);  // чуть позаумнее 

// пишем обратно
$fp fopen ($name'w');
fwrite ($fp,$file);
fclose ($fp);
?>

   
 
 автор: bronenos   (27.04.2007 в 07:13)   письмо автору
 
   для: FroNiTy   (27.04.2007 в 06:30)
 

если не ошибаюсь, не везде переход осуществляется 2 символами, где то и одним может быть

   
 
 автор: FroNiTy   (27.04.2007 в 07:36)   письмо автору
 
   для: bronenos   (27.04.2007 в 07:13)
 


$file=preg_replace("/($delete)([\r\n|\n]+)/i","",$file);


тогда так...

   
 
 автор: Trianon   (27.04.2007 в 09:31)   письмо автору
 
   для: FroNiTy   (27.04.2007 в 07:36)
 

это не нужно. Вертикальная черта попадет в список терминаторов.

   
 
 автор: Trianon   (27.04.2007 в 09:29)   письмо автору
 
   для: bronenos   (27.04.2007 в 07:13)
 

такое выражение не зависит от того, какой терминатр применяется CRLF, LF или LFCR.
Но у него есть другой недостаток. Оно будет захватывать пустые строки в неограниченном количестве

   
Rambler's Top100
вверх

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