Я читаю CSV-файл, но некоторые из значений не экранируются, поэтому PHP читает его неправильно. Вот пример строки, что плохо:Чтение CSV-файла с неэкранированными окнами
«635»,»„“AUBREY Р. Филлипс (1920-) - Пастель изображающей коттеджи в крутой сторонняя долина реки, возможно, Северный Уэльс, подписанный и датирован 2000, обрамлен, 66 см на 48 см. другой деревенский пейзаж, названный verso «Время сбора урожая, Сомерсет», подписанное и датированное 1987 годом, в рамке, 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
@Churkm Done :) – 472084