Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Usuwanie pustych linii
ZeTu
post 1.01.2012, 01:16:51
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post
by_ikar
post 1.01.2012, 02:13:41
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


  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).
Go to the top of the page
+Quote Post
mortus
post 1.01.2012, 13:42:02
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


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.

Ten post edytował mortus 1.01.2012, 13:43:15
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 1.06.2025 - 10:01