私はCSVファイルを読んでいますが、値の一部がエスケープされていないため、PHPが間違って読み込んでいます。ここで悪いラインの例です。エスケープされていないエンクロージャを使用してCSVファイルを読む
「635」、」 『』 AUBREY R. PHILLIPS(1920-) - でパステル描いたコテージは、急な両面川の渓谷、おそらく北ウェールズ、署名しますそして、 2000年、額入り、66cm×48cmの別の田舎の風景、別名verch "収穫時間、サマセット" 87年署名、日付、69cm×49cm (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] =>
)
それは今、他の正しい行よりも多くの配列の要素が含まれているとして、明らかに間違っています。値の間違った量と
$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
配列に入れます:ここで
は、私が使用していますPHPです。
これを回避するにはどうすればよいですか?ありがとう。
は、あなたどのようにあなたのコードを投稿するべきCSVを解析します。間違いかもしれませんが、コードなしで助けたり教えたりすることはできません。 – Churk
@Churkm完了: – 472084