Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] pojawiajcy się znak końca linii przy zapisie do pliku, pojawia się tylko gdy usuwam ostatni element tablicy (ostatni wiersz)
windman
post
Post #1





Grupa: Zarejestrowani
Postów: 184
Pomógł: 13
Dołączył: 7.01.2008

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


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? (IMG:http://forum.php.pl/style_emoticons/default/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. ?>


Ten post edytował windman 2.03.2009, 09:38:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jak to rozwiązac? Zastanow sie przez chwile (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ps: uzywaj bbcode [php] do kodu php!!!
Go to the top of the page
+Quote Post
windman
post
Post #3





Grupa: Zarejestrowani
Postów: 184
Pomógł: 13
Dołączył: 7.01.2008

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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!

Ten post edytował windman 2.03.2009, 10:08:10
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 10.10.2025 - 10:42