Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odczyt danych z pliku CSV między średnikami
Forum PHP.pl > Forum > Przedszkole
kubax33
Mam plik csv

  1. Nr;nazwa;cena;
  2. 1;butelka;12.00;butelki dla dzieci;"<span style="font-size: 10px;">butelka dla dzieci Avent</span>"

  1. $plik = 'plik.csv';
  2. $dane = file($plik);
  3.  
  4. for($i=0;$i<count($dane);$i++)
  5. {
  6. list($id[$i], $cena[$i], $nazwa[$i], $opis[$i]) = explode(";", $dane[$i]);
  7. }
  8.  
  9. for($i=0;$i<count($id);$i++)
  10. {
  11. echo $nazwa[$i];
  12. }


i problem jest w opisie bo zawiera on średnik tak jak separator oraz ma cudzysłów i odczytuje mi też cudzysłów. Czy idzie to jakoś ominąć? Cudzysłowy mogę odciąć jako pierwszy i ostatni znak, ale co jeśli w pliku jest separator, który ma zostać, a nie odczytywać się jako kolejna kolumna. Interesuje mnie rozwiązanie niestety tylko dla tego kodu. Proszę o propozycje
trueblue
http://php.net/manual/en/function.fgetcsv.php
Możesz ustawić opcję, że stringi są otoczone ".
Pyton_000
Stringi domyślnie są w ", jedynie musi zmienić delimiter na ;
kubax33
Cytat(trueblue @ 18.01.2017, 21:07:35 ) *
http://php.net/manual/en/function.fgetcsv.php
Możesz ustawić opcję, że stringi są otoczone ".


to teraz użycie tego fgetcsv?

  1. list($id[$i], $cena[$i], $nazwa[$i], $opis[$i]) = fgetcsv(explode(";", $dane[$i]));


chyba niezbyt...
trueblue
Poniżej opisu funkcji jest przykład.
Tomplus
Dokładnie.

Opis funkcji brzmi: Gets line from file pointer and parse for CSV fields
Czyli plik CSV przetwarzasz na tablicę, a ty zaprezentowałeś: że chcesz funkcję przerobić tablicę na tablicę smile.gif

Jak coś masz jeszcze funkcję:
str_getcsv
która przetwarza string w formacie CSV na tablicę
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.