ho già riuscito a dividere il file CSV utilizzando questa espressione regolare: "/, (=? (:? [^ \"] \ "[^ \"] \ ") (?! [^ \ "] \"))/"espressione regolare per il parsing CSV in PHP
Ma ho finito con una serie di stringhe che contengono le virgolette doppie di apertura e di fine. Ora ho bisogno di un'espressione regolare che rimuova quelle stringhe delle doppie virgolette del delimitatore.
Per quanto ne so, il formato CSV può incapsulare stringhe tra virgolette doppie e tutte le virgolette doppie che sono già parte della stringa sono raddoppiate. Per esempio:
mio "altro" gatto
diventa
"My "" altro" "cat"
Quello che fondamentalmente bisogno è una regex che andrà a sostituire tutte le sequenze di N doublequotes con una sequenza di virgolette doppie (N/2 - arrotondate per difetto).
O c'è un modo migliore? Grazie in anticipo.
+1 Tu sei pazzo da usare regex per CSV in PHP quando c'è una funzione integrata che fa esattamente ciò che desideri – cletus
Sì. Perché vuoi re-inventare la ruota quando c'è qualcosa là fuori che è molto ben testato e che funziona per risolvere il tuo problema. – Rachel
Perché forse si ottiene un'esportazione CSV da una terza parte che non cita correttamente i campi di testo e fgetcsv interpreta erroneamente la stringa 1.15 come float con il valore di 1.1499999999. Tuttavia, alla fine è stato più facile scrivere uno script rapido per correggere il file CSV e quindi usare fgetcsv: o) – frak