Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Import kontaktów do SQLa
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
DNMX
Nadal męczę temat z poprzednich wątków. Tym razem próbuję zaciągnąć kontakty z .csv wygenerowanego w Gmailu. Googlowałem rzecz jasna, znalazłem kilka prostych gotowcy jakobrabiać CSV-ki w PHP ale wszystkie się gubią jak np, w informacjach o kontakcie jest kilka linijek bo wszystkie traktują plik jako podzielony \n na rowy. Tymczasem szukam rozwiązania któ?e poprawnie zinterpretuje taki kod:
Kod
pierwsza,linijka,"trzecie pole",
drug,linijka,"wielowierszowy
komentarz
z kilkoma
ENTERami"
"tu dopiero",trzecia,linijka

Ktoś? coś?
trueblue
Używałeś: https://www.php.net/manual/en/function.fgetcsv.php ?
DNMX
Działa tylko że zwraca dane w postaci $data[0], $data[54] a nie $data[name], $data[street]. Niby nie duży problem ale mogłoby traktować pierwszą linjkę jako nagłówki. W dodatku trzeba uważać, żeby pierwszego wiersza przypadkowo nie potraktować jako dane. W drugim przykładzie w linku który podałeś jest opisane jak zrobić z headerami ale to znowu się wykrzacza w przypadku wielowierszowych pól.
trueblue
Który przykład masz na myśli? Podaj link.
DNMX
Cytat(Gandalf the White)
Forget this while() loop mumbo jumbo! Use this:

Kod
$rows = array_map('str_getcsv', file('myfile.csv'));
$header = array_shift($rows);
$csv = array();
foreach ($rows as $row) {
  $csv[] = array_combine($header, $row);
}

Source: https://steindom.com/articles/shortest-php-...sociative-array
trueblue
  1. $rows = [];
  2. if (($handle = fopen("myfile.csv", "r")) !== FALSE) {
  3. while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
  4. $rows[] = $row;
  5. }
  6. fclose($handle);
  7. }
  8.  
  9. $header = array_shift($rows);
  10. $csv = [];
  11. foreach ($rows as $row) {
  12. $csv[] = array_combine($header, $row);
  13. }


Kod
c1,c2,c3 <- nazwy kolumn
pierwsza,linijka,"trzecie pole" <- tu bez przecinka
drug,linijka,"wielowierszowy
komentarz
z kilkoma
ENTERami"
"tu dopiero",trzecia,linijka
DNMX
Piękny fragment kodu, dzięki!
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-2024 Invision Power Services, Inc.