Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Tworzenie powrotu karetki w komórce csv za pomocą php

specyfikacja CSV to taki, który zaimplementowałem na wiele różnych sposobów... wygląda na to, że jest tylko w połowie określony, co jest frustrujące, biorąc pod uwagę jego popularność.

Aby dołączyć nową linię do komórki w CSV, może być konieczne zawinięcie tej komórki lub może być konieczne ominięcie nowej linii. W załączonym dokumencie zauważysz, że można to zrobić na trzy sposoby – a różne programy traktują to w różny sposób:

  1. Excel otacza całą komórkę podwójnymi cudzysłowami:komórka może zawierać (bez ucieczki) znaki nowej linii i być uważana za pojedynczą komórkę, o ile jest otoczona podwójnymi cudzysłowami (pamiętaj też, że musisz użyć stylu Excela podwójny cudzysłów w treści komórki)
  2. Inne programy wstawiają pojedynczy ukośnik odwrotny przed znakiem, dlatego wiersz kończący się na \ nie jest uważany za koniec wiersza, ale za znak nowego wiersza w komórce. Komórka może zawierać znaki nowej linii bez zmiany znaczenia, o ile są poprzedzone znakiem odwrotnego ukośnika.
  3. Inne nadal zastępują znak nowej linii znakiem ucieczki w stylu C, rzeczywista sekwencja znaków \n lub \r\n . W tym przypadku komórka ma całkowicie pominięte znaki nowej linii.

Problem jest spotęgowany potencjalną potrzebą ucieczki znaków kontrolnych (jak również innej zawartości (np. " w #1 i \ w #2+3) i różne style ucieczki (np. osadzony cytat może zostać zmieniony jako:podwójny podwójny cudzysłów "" lub podwójny cudzysłów odwrotny ukośnik \" )

Moja rada :wygeneruj dokument otwartego biura z wieloma wierszami i kluczowymi znakami ucieczki i zobacz, jak open-office generuje CSV plik. Stamtąd możesz zdecydować, której z powyższych metod użyć dla nowych wierszy w komórkach i która metoda ucieczki.

przykład stylu 1 (excel):

#num,str,num
1,"Hello
World",1990
2,"Yes",1991

przykład stylu-2:

#num,str,num
1,Hello \
Word,1990
2,Yes,1991

przykład stylu-3:

#num,str,num
1,Hello \nWorld,1990
2,Yes,1991


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskiwanie połączenia PHP PDO z mysql_connect()?

  2. Dodanie złączenia przez MySql daje nieprawidłowe wyniki

  3. Zmień nazwę kolumny w tabeli mysql bez konieczności powtarzania jej definicji typu

  4. PHP MySQL wstawiający dane do wielu tabel

  5. Wykonaj wiele aktualizacji w jednym zapytaniu SQL przy użyciu PHP