Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Plik .csv i znaki niewidoczne \n
Forum PHP.pl > Forum > Przedszkole
q3d
Dane zostały utworzone w Excelu i wyeksportowane do .csv. Niestety w niektórych komórkach znajdują się niewidoczne znaki w tym znak końca wiersza. Przez to
  1. file(plik.csv)

zwraca tablicę w której są czasami fragmenty wierszy.

W jaki sposób usunąć te niechciane niewidoczne znaki ale pozostawić ostatni znak końca wiersza?
Pyton_000
bo do csv jest inna funkcja.. getcsv
q3d
To nic nie zmienia. Funkcja fgetcsv () sczytuje dane z pliku wiersz po wierszu. Jeżeli wiersz jest "złamany" bo w którejś z linii znajduje się niewidoczny znak \n to do tablicy zwracanej przez funkcję fgetcsv() wędruje fragment poprzedniego wiersza. Nie mogę usunąć z plików wszystkich znaków \n bo wtedy powstanie jeden wiersz. Musiałbym usunąc z wiersza wszystkie po za ostatnim przy czym może się zdarzyć, że ostatni jest równocześnie jedynym.
Pyton_000
pokaż taki wiersz z tego csv
q3d
  1. 105;a; ;b;138,112,191;1292; ;c;opis
  2. opis: opis
  3. ";d;e; ;f;0;n;;;g; ; ; ;
  4. 106;a; ;b;11,12,13; ;c;opis: opis;d;e; ;f;0;n;;;g; ; ; ;


Wkleiłem dwa wiersze: 105 w którym opis jest złamany i to w dwóch miejscach. 106 (poprawny) to kolejny wiersz.

P.S.
Plik jest zapisywany do .csv w LibreOffice Calc. Przy zapisie opcje: rozdziel pola ; i separator tekstu ". Chyba dość dziwne, że znak " dla wiersza 105 znajduje się tylko na końcu pola z opisem. W wierszu 106 znak " nie występuje wcale.
Pyton_000
dlatego Ci nie działa, bo jest źle sformatowany csv

" powinien być na początku i na końcu tekstu, wtedy łamanie linii nie będzie niczym innym jak tekstem i odczytany jak komórka.
q3d
TO by trochę wyjaśniało sprawę. Pytanie teraz dlaczego LibreOffice w tym przypadku to tak zapisuje.
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.