2012-09-03 63 views
1

讓我們來看看我這個在CSV字符串(從捲曲輸出了它):PHP讀取CSV字段包含在該領域新的生產線

"name";"gender";"address";"phone";\n 
"John Doe"; "Male"; "Broke Street\n No. 69 South Pole";"911";\n 

類似的東西,我用爆炸由線到線,然而有一個字段也使用\ n換行,因此弄亂了我的數組索引。我該如何解決這個問題,任何想法?

+0

編輯我得到的具有雙引號的實際csv內容。 – Ardeus

回答

0

大氣壓林「「; \ n」到「」;#N」或者你喜歡和使用爆炸分裂#N分隔符來獲得每一行別的東西。

我想這就是什麼,我現在的工作。

2

這是一個嚴重的產生/損壞的.csv,在這種情況下。如果一個字段包含換行符,那麼它應該被"所包圍,這樣csv解析器就可以告訴線路中斷到開始的新記錄,而不是線路中斷 - 場 - 一個新的分開。

解決什麼正在生成的CSV,而不是試圖去處理它吐出垃圾。

+0

我忘了提及,csv字段實際上是用雙引號括起來的,我用str_replace將它刪除,因此它留下了乾淨的數據atm。我將編輯我的帖子。那麼我應該使用什麼csv解析器,php str_getcsv? – Ardeus

+0

這意味着你自己正在損壞csv。在數據解析之前停止按摩數據。 –

+0

原因是因爲它的工作原理,如果該值不包含新行或分隔符。所以它就像使用str_replace一樣簡單,並爆炸完成工作。現在,如果您指的是str_getcsv($ output,「\ n」,'「')或沒有外殼參數,解析器仍然無法識別該字段內的\ n不適用於新的行線。 – Ardeus

0

在你的情況,這是一個畸形的CSV。

其實你可以使用preg_match_all來解析該文件,而不關心它是否是一個CSV或沒有。 preg_match('#([^;] +);([^;] +);([^;] +);([^;] +)\ s?#',$ csv_file_content, $匹配);使用str_replace函數來代替

相關問題