|
|
|
| Код просмотра прайса такой:
if (($handle = @fopen("csv/import.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 750, ";")) !== FALSE)
{
$row++;
$num = count($data);
echo "<br />$num полей в строке $row. ";
$m_num[] = $num;
if ($row ==1) $m_name = $data; // Запишем названия полей
for ($c=0; $c < $num; $c++)
{
echo $data[$c] . "<br />";
}
}
fclose($handle);
}
else die ("Ошибка открытия файла import.csv");
|
В csv файле 10 столбцов, и в Экселе все строки отражаются верно. Тот же результат дает контрольный просмотр блокнотом.
А вот функция показывает, что имеется дефектная строка, в которой только одна клетка! И образована она окончанием текста из последнего столбца предыдущей строки.
Из-за этого возникает конфликт с составителем прайса, ибо нет аргументов, подтверждающих брак. И непонятно, что исправлять.
Да и является ли это браком прайса или fgetcsv чудит? | |
|
|
|
|
|
|
|
для: Владимир55
(13.05.2013 в 20:43)
| | Может дело в переводе строки, например, используется Windows-перевод строки \r\n, а функция ожидает UNIX-перевод \n?
Можете прикрепить кусочек прайса (если он не секретный)? | |
|
|
|
|
|
|
|
для: cheops
(13.05.2013 в 20:49)
| | Прайс не секретный, он тестовый, но дело оказалось не в нем - я не учел, что в UTF-8 кириллица занимает больше места. Заменил аргумент length ("750") на "0" и все стало нормально.
Только работает заметно медленнее. | |
|
|
|