Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: удалить из файла пустые строки
Форумы портала PHP.SU » » Работа с файловой системой и файлами » удалить из файла пустые строки

Страниц (1): [1]
 

1. bushstas - 27 Июня, 2010 - 20:02:13 - перейти к сообщению
Удаляю из файла определенную строку, остается пробел между строками,
не подскажите как удалить пустую строку из файла?
2. Champion - 27 Июня, 2010 - 20:05:49 - перейти к сообщению
А как удаляешь? Небось сам этот пробел и записываешь в файл. Т.е. не пробел, а перевод строк.и
3. SAD - 27 Июня, 2010 - 20:23:48 - перейти к сообщению
попробуй так
PHP:
скопировать код в буфер обмена
  1.  
  2. $base = file_get_contents("1.txt");
  3. $base = rtrim(preg_replace("/[\r\n]+/m","\r\n", $base));
  4. $fp = fopen("1.txt","w");
  5. fwrite($fp, "$base");
  6. fclose($fp);
4. Champion - 27 Июня, 2010 - 20:27:45 - перейти к сообщению
Ну вот еще preg_replace тут не хватало... И подстановки переменной в двойных кавычках. Думайте о быстродействии. Пусть немного, но из таких немного секунды могут складываться.
5. SAD - 27 Июня, 2010 - 20:40:31 - перейти к сообщению
Не мое, нашел во всемирной сети.
6. bushstas - 27 Июня, 2010 - 21:46:17 - перейти к сообщению
Champion пишет:
А как удаляешь? Небось сам этот пробел и записываешь в файл. Т.е. не пробел, а перевод строк.и


У меня файл sitemap.xml
При удалении страницы с сайта нужно удалить и строку из данного файла чтобы поисковик не индексировал ее больше
Сначала сохраняю содержимое файла в переменную $txt с помощью fread
затем $txt=str_replace('stroka','',$txt);
так и удаляю строку из файла, а из переменной $txt не получилось удалить \n\n то есть пустую строку
7. alexspb - 28 Июня, 2010 - 00:38:33 - перейти к сообщению
можно для наглядности добавить
8. JustUserR - 28 Июня, 2010 - 14:47:45 - перейти к сообщению
bushstas пишет:
У меня файл sitemap.xml
При удалении страницы с сайта нужно удалить и строку из данного файла чтобы поисковик не индексировал ее больше
Сначала сохраняю содержимое файла в переменную $txt с помощью fread
Во-первых если файл sitemap.xml является валидным XML-файлом то и обрабатывать его лучше с помощью соответствующего XML-парсера - в PHP присутствует множество библиотек позволяющие делать как простую так и сложную обработку
Во-вторых если файл карты сайта является достаточно большим то не имеет смысла целиком считывать его в память - а гораздо лучше применить универсальный механизм обработки текстовых файлов Его смысл заключается в том что вы построчно считываете оригинальный файл - и после проверки и обработки каждой прочитанной строки вы записываете ее в новый файл - а в конце обработки меняете файлы местами и удаляете старый из них или делаете резервную его копию Такой подход хорош по многим причинам - во-первых если вы изменяете текущий файл в середине например добавляя иди удаляя оттуда информацию - то системе все равно приходится переносить оставшуются до конца файла часть данных что занимает некоторое время - во-вторых не приходится считывать файл целиком в память что является очень ресурсозатраным - поскольку для считывания файла в памяти потребуется почти в 2 раза больше места чем он занимает на дисковом накопителе Кроме того такой подход по умолчанию используется при работе с файлами в Perl - а ведь как известно обработка текстовых файлов/отчетов является одной из важнейшей задачи Perl
9. black_ru - 14 Июля, 2011 - 15:09:47 - перейти к сообщению
Прошу прощения, что поднял такую старую тему. Просто искал сабж. У меня на основе вышеизложенного получилось так:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $base = file_get_contents("file.txt");
  3. $pattern1[0] = "/^.*$strinkk.*$/m";
  4. $pattern1[1] = "/\n\n+/m";
  5. $replacement1[0] = "";
  6. $replacement1[1] = "\n";
  7. $base = preg_replace($pattern1, $replacement1, $base);
  8. $fp = fopen("ile.txt","w");
  9. fwrite($fp, "$base");
  10. fclose($fp);

Т.е. у себя по своей переменной меняю всю строку, остается пустая строка, если писать дальше в файл, поэтому применяю $pattern1[1], который подтягивает строку до последней.

 

Powered by ExBB FM 1.0 RC1