我正在讀取一個CSV文件,但其中一些值未被轉義,因此PHP讀取的內容不正確。這裏是一條線是壞的例子:使用未轉義的存儲模塊讀取CSV文件
「635」,」‘’AUBREY R.菲利普斯(1920-) - 粉彩描繪 小屋一個陡峭的河谷,可能是北威爾士,簽署並註明日期爲 2000框架,66釐米48釐米另一個鄉村景觀,標題爲 「收穫時間,薩默塞特」簽署和日期'87,框架,69釐米49釐米 (2)NB - 奧布里菲利普斯是一個伍斯特郡藝術家誰就讀於 藝術學院的Stourbridge 「」 40" , 「60」, 「WAT」, 「繪畫,版畫和水彩畫 」,
你可以看到收穫時間,薩默塞特引用了它,導致PHP認爲它是一個新的價值。
當我做的print_r()在每行,虛線最終看起來像這樣:
Array
(
[0] => 635
[1] =>
[2] => AUBREY R. PHILLIPS (1920-) - Pastel depicting cottages in a steep sided river valley, possibly North Wales, signed and dated 2000, framed, 66cm by 48cm. another of a rural landscape, titled verso Harvest Time
[3] => Somerset" signed and dated '87
[4] => framed
[5] => 69cm by 49cm. (2) NB - Aubrey Phillips is a Worcestershire artist who studied at the Stourbridge School of Art."
[6] => 40
[7] => 60
[8] => WAT
[9] => Paintings, prints and watercolours
[10] =>
)
這顯然是錯誤的,因爲它現在包含了比其他行的正確還有更多的數組元素。
這裏是我使用的PHP:
$i = 1;
if (($file = fopen($this->request->data['file']['tmp_name'], "r")) !== FALSE) {
while (($row = fgetcsv($file, 0, ',', '"')) !== FALSE) {
if ($i == 1){
$header = $row;
}else{
if (count($header) == count($row)){
$lots[] = array_combine($header, $row);
}else{
$error_rows[] = $row;
}
}
$i++;
}
fclose($file);
}
行與錯誤的量值中得到投入$error_rows
,其餘獲得放入大$lots
陣列。
我能做些什麼來解決這個問題?謝謝。
應該張貼你如何你的代碼解析CSV,可能有錯誤,但無法幫助或告訴你,沒有你的代碼。 – Churk 2012-03-16 11:42:08
@Churkm完成:) – 472084 2012-03-16 11:50:01