Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Plik .csv i znaki niewidoczne \n, Wczytanie pliku .csv zawierającego znaki niewidoczne
q3d
post
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


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?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


bo do csv jest inna funkcja.. getcsv
Go to the top of the page
+Quote Post
q3d
post
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


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.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


pokaż taki wiersz z tego csv
Go to the top of the page
+Quote Post
q3d
post
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


  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.

Ten post edytował q3d 18.09.2015, 12:56:18
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


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.
Go to the top of the page
+Quote Post
q3d
post
Post #7





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


TO by trochę wyjaśniało sprawę. Pytanie teraz dlaczego LibreOffice w tym przypadku to tak zapisuje.
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 Aktualny czas: 20.08.2025 - 13:23