Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: fgetcsv бракует нормальный файл
 
 автор: Владимир55   (13.05.2013 в 20:43)   письмо автору
 
 

Код просмотра прайса такой:
    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 чудит?

  Ответить  
 
 автор: cheops   (13.05.2013 в 20:49)   письмо автору
 
   для: Владимир55   (13.05.2013 в 20:43)
 

Может дело в переводе строки, например, используется Windows-перевод строки \r\n, а функция ожидает UNIX-перевод \n?
Можете прикрепить кусочек прайса (если он не секретный)?

  Ответить  
 
 автор: Владимир55   (13.05.2013 в 23:08)   письмо автору
 
   для: cheops   (13.05.2013 в 20:49)
 

Прайс не секретный, он тестовый, но дело оказалось не в нем - я не учел, что в UTF-8 кириллица занимает больше места. Заменил аргумент length ("750") на "0" и все стало нормально.

Только работает заметно медленнее.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования