Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Замена для fgetcsv(), работающая корректно с любым CSV (Дмитрий Котеров)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Fri Nov 28, 2003 5:34 pm ()
   Post subject: Замена для fgetcsv(), работающая корректно с любым CSV
Reply with quote

В соответствии с
bugs.php.net/bug.php?id=12127
bugs.php.net/bug.php?id=21689

в ранних версиях PHP (<4.3.0) функция fgetcsv() работает неправитьно. Вот замена для нее, корректно обрабатывающая:
— кавычки и вложенные кавычки;
— многострочные значения полей;
— русские буквы.

Пример использования:
Code (php): скопировать код в буфер обмена
require_once "File/FGetCSV.php";
$f = @fopen (www.php.net/fopen)($cfg_File, "r") or die (www.php.net/die)("Could not open \"$cfg_File\" - ".$php_errormsg);
while ($list = File_FGetCSV::fgetcsv (www.php.net/fgetcsv)($f, 65536, ";")) {
        $Data[] = $list;
}



File_FGetCSV.zip
 Description:
Замена стандартной fgetcsv() (плюс еще fputcsv()), нормально работающая с русскими буквами.

Download
 Filename:  File_FGetCSV.zip
 Filesize:  899 Bytes
 Downloaded:  2421 Time(s)



Last edited by Дмитрий Котеров on Thu Dec 04, 2003 8:49 pm; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 412
   поощрить/наказать


PostPosted: Fri Nov 28, 2003 5:35 pm (спустя 1 минуту 41 секунду)
   Post subject:
Reply with quote

Да, забыл добавить: там же есть и функция fputcsv(), которая, наоборот, записывает список в CSV-файл.
Back to top
View user's profile Send private message Send e-mail
Bear
Guest





Карма: 387
   поощрить/наказать


PostPosted: Fri Sep 25, 2009 12:38 pm (спустя 5 лет 9 месяцев 26 дней 19 часов 3 минуты; написано за 1 минуту 19 секунд)
   Post subject:
Reply with quote

Большое спасибо. Очень помогло. Проблема с кирилицей до сих пор актуальна даже на php5, если на хостинге не установленна нужная локаль. в этом случае данное решение подходит идеально. Ещё раз спасибо. +1
Back to top
Fariah
Заглянувший



Joined: 18 Aug 2011
Posts: 1
Карма: 0
   поощрить/наказать

Location: Kharkov

PostPosted: Thu Aug 18, 2011 10:33 am (спустя 1 год 10 месяцев 22 дня 21 час 54 минуты; написано за 1 минуту 44 секунды)
   Post subject:
Reply with quote

Даже сегодня эта информация актуальна. Делал импорт на Symfony 1.4 И столкнулся с тем, что съедались русские слова. При этом выборочно. Благодаря подсказке выше, проблему решил, спасибо.
Back to top
View user's profile Send private message
jeam
Заглянувший



Joined: 27 Oct 2011
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Thu Oct 27, 2011 2:38 pm (спустя 2 месяца 9 дней 4 часа 5 минут; написано за 2 минуты 26 секунд)
   Post subject:
Reply with quote

Господа! А можно привести работающий пример а не полуфабрикат. Например воспроизведя действия основного примера fgetcsv:
Code (php): скопировать код в буфер обмена
<?php
$row = 1;
$handle = fopen (www.php.net/fopen)("test.csv", "r");
while (($data = fgetcsv (www.php.net/fgetcsv)($handle, 1000, ",")) !== FALSE) {
    $num = count (www.php.net/count)($data);
    echo (www.php.net/echo) "<p> $num    $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo (www.php.net/echo) $data[$c] . "<br />\n";
    }
}
fclose (www.php.net/fclose)($handle);
?>
для fgetcsv и fputcsv
Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 270
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Feb 17, 2012 10:52 pm (спустя 3 месяца 21 день 8 часов 13 минут; написано за 1 минуту 18 секунд)
   Post subject:
Reply with quote

jeam
разве в первом сообщении темы не работающий пример? К слову, Ваш пример ужасен.
Back to top
View user's profile Send private message
adamasantares
Заглянувший



Joined: 17 Apr 2013
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Wed Apr 17, 2013 10:44 pm (спустя 1 год 1 месяц 28 дней 23 часа 52 минуты; написано за 3 минуты 33 секунды)
   Post subject: Вольность, ремейк скрипта
Reply with quote

Знаю что некропост, но вcе же решил разместить свой ремейк данного скрипта, вдруг пригодится. Сильно не бейте, если код кривой или плохо оптимизированный, сделано на скорую руку для текущего проекта.

ПС: успел обновить три-четыре раза, быстро вылезли разные баги.


CSVMaster.zip
 Description:
Скрипт в кодировке utf-8

Download
 Filename:  CSVMaster.zip
 Filesize:  3.9 KB
 Downloaded:  396 Time(s)

Back to top
View user's profile Send private message
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 270
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri May 17, 2013 5:20 pm (спустя 29 дней 18 часов 35 минут; написано за 10 секунд)
   Post subject:
Reply with quote

adamasantares
в чём отличия от оригинала?
Back to top
View user's profile Send private message
adamasantares
Заглянувший



Joined: 17 Apr 2013
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Sat Jun 29, 2013 6:34 pm (спустя 1 месяц 12 дней 1 час 14 минут; написано за 2 минуты 52 секунды)
   Post subject:
Reply with quote

Maus wrote:
adamasantares
в чём отличия от оригинала?
Добавлена возможность перемещения по строкам (туда,сюда) + оформлено в виде класса. Я так и написал, что это небольшой ремейк. По сути изменения не существенны, но любопытны.

ПС: А вы скрипт смотрели или просто намекаете, что нужно было описать отличий от оригинала?
Back to top
View user's profile Send private message
cityk
Заглянувший



Joined: 22 Oct 2015
Posts: 1
Карма: 0
   поощрить/наказать

Location: Москва

PostPosted: Thu Oct 22, 2015 9:38 pm (спустя 2 года 3 месяца 23 дня 3 часа 4 минуты; написано за 29 секунд)
   Post subject:
Reply with quote

ээээммм...норм в принципе...
_______________________________________________________________________________
переезд коттеджа (www.citymoving-pereezd.ru/dachnii-pereezd.html)
Back to top
View user's profile Send private message
ultrase
Заглянувший



Joined: 27 Jan 2016
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Wed Jan 27, 2016 8:48 pm (спустя 3 месяца 4 дня 23 часа 9 минут; написано за 10 секунд)
   Post subject:
Reply with quote

так это только програмно можно сделать?
Back to top
View user's profile Send private message
valnushkas
Заглянувший



Joined: 29 Jan 2016
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Fri Jan 29, 2016 2:52 pm (спустя 1 день 18 часов 3 минуты; написано за 25 секунд)
   Post subject:
Reply with quote

лучше всего на cms какой то сделать, я так думаю вот только на какой не знаю
Back to top
View user's profile Send private message
ultrase
Заглянувший



Joined: 27 Jan 2016
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Fri Jan 29, 2016 2:53 pm (спустя 1 минуту 42 секунды; написано за 24 секунды)
   Post subject:
Reply with quote

да что там выбирать?UMI CMS лучше всего будет работать
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML