Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie pustych linii
Forum PHP.pl > Forum > Przedszkole
ZeTu
Witam
W jaki sposób można usunąć puste linie z pliku np. .txt o takich danych
  1. cos tam
  2. cos tam
  3.  
  4. cos tam
  5. cos tam
  6. cos tam
  7.  
  8. cos tam

I w jaki sposób usunąć wszystkie puste linie?
by_ikar
  1. <?php
  2.  
  3.  
  4. $str = 'cos tam
  5. cos tam
  6.  
  7. cos tam
  8. cos tam
  9. cos tam
  10.  
  11. cos tam';
  12.  
  13. $str = preg_replace(array('/( {2,})/', '/(\n{2,})/'), array(' ', PHP_EOL), $str);
  14.  
  15.  
  16. echo $str;


Zmienia więcej niż jedną spacje na jedną spacje, więcej niż jedną nową linię, w jedną nową linię (enter).
mortus
Innym rozwiązaniem może być użycie funkcji file() z flagą FILE_SKIP_EMPTY_LINES:
  1. $filename = 'dane.txt';
  2. $lines = file($filename, FILE_SKIP_EMPTY_LINES);
  3. file_put_contents($filename, implode('', $lines));

Oczywiście to rozwiązanie, jak i rozwiązanie użytkownika @by_ikar należy stosować do plików "małych", o wielkości powiedzmy do 50MB. W sytuacji, kiedy plik będzie zbyt duży (będzie zawierał dużo treści) braknie nam pamięci na wykonanie całego skryptu. Wtedy trzeba skorzystać z funkcji fopen(), fgets(), sprawdzać długość każdej pobranej linii i zapisywać ją, lub nie do nowego pliku czy tablicy, z której później utworzysz plik.

EDIT: De facto, dokładnie taki sam problem był już na forum poruszany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.