Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pojawiajcy się znak końca linii przy zapisie do pliku
Forum PHP.pl > Forum > PHP
windman
Witam,

Ponieżej zamieściłem mały skrypt, z którym mam problemy. Sprawa dotyczy odczytu i zapisu do pliku txt.
CZESC 1 odczytuje zawartosc pliku i tworzy tablice dataArray (2 wymiary: 1wym-wiersze z pliku, 2wym-elementy wiersza odzielone przecinkiem).
CZESC 2 dokłanie na odwrót z tablicy dataArray tworzy stringi - stringRow. Wyjątek stanowi element tablicy dataArray z indeksem 2, który powinien zostac pominięty.
CZESC 3 zapusuje string do pliku.

Wszystko działa prawidłowo z tym, żę gdy pomijam ostatni element tablicy w pliku pojawia się na końcu znak nowej lini. Gdy pomijam inne elementy tablicy to wszystko jest ok.
Dodam, że gdy usunę linię pomijającą wskazany element tablicy, tablica zostaje przepisana w całości i zapisana do pliku i plik wygląda identycznie jak przed operacją, żadnych nowych znaków końca linii, ten pojawia się tylko gdy z tablicy dataArray pomijam ostatni element.

Dlaczego? questionmark.gif
Pozdrawiam

  1. <?php
  2. //CZESC 1
  3. $fileContent = file($file);
  4. foreach($fileContent as $k=>$v){
  5. $dataArray[$k] = explode(',',$v);
  6. }
  7.  
  8. //CZESC 2
  9. $stringRow=false;
  10. foreach($dataArray as $k=>$v){
  11. if($k == 2) continue; // tutaj pojawiają się problemy
  12. $stringRow.=implode(',',$v);
  13. }
  14.  
  15. //CZESC 3
  16. if(@$fp=fopen($file, "w+")){
  17. if(flock($fp, LOCK_EX)){
  18. fwrite($fp, $stringRow);
  19. flock($fp, LOCK_UN);
  20. }
  21. }
  22. ?>
nospor
file() zwraca ci linie z pliku wraz ze znakiem konca linii.
Ostatnia linia w pliku nie zawiera "entera" wiec jak zapisujesz spowrotem do pliku wszystko to masz jak miales.
Gdy usuwasz ostanią linie, to przedostania linia zawiera "enter" wiec masz nową pustą linię w nowym pliku. Proste smile.gif

Jak to rozwiązac? Zastanow sie przez chwile smile.gif

ps: uzywaj bbcode [php] do kodu php!!!
windman
Cytat(nospor @ 2.03.2009, 07:56:23 ) *
Gdy usuwasz ostanią linie, to przedostania linia zawiera "enter" wiec masz nową pustą linię w nowym pliku. Proste smile.gif
To przeoczyłem

Cytat(nospor @ 2.03.2009, 07:56:23 ) *
ps: uzywaj bbcode [php] do kodu php!!!
Będę.

Dzięki i pozdrawiam!
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.