За чистый и ясный код!

Статьи на тему программирования под веб, используя PHP, MySQL, Jquery и многое другое

Парсинг CSV файлов на PHP

Ноябрь28

В данной статье речь пойдет о распознавании  формата CSV.

Что такое формат данных CSV, пояснять не буду, прочитайте об этом на http://ru.wikipedia.org/wiki/CSV.

И так, у меня был исходный файл в CSV формате, с кодировкой UTF-8, необходимо было его разобрать, для последующего заноса в базу данных.

Небольшой фрагмент этого файла

Имя;Фамилия;Мыло;Разное
Максим;Нагайченко;max_nag[at]meta.ua;программист
"?Мария";"????µ";intik_79[at]mail.ru;
;;some@email.com

Как видно здесь встречаются кириллица, латиница, умляуты (расширенная латиница).

Для парсинг я воспользовался стандартной ф-цией PHP — fgetcsv.

При разборе на виндовс машине вообще никаких проблем не возникло, все было разобрано, разложено — в общем все как надо, осталось только занести в БД.

При разборе этого файла на линукс машине возникли проблемы — кириллица вообще не хотела распознаваться, если она не была обрамлена — кавычкой («). Решение нашлось за 30 минут и выпитой чашкой чая.

Оказывается, необходимо указывать корректную локаль при работе с данной ф-цией, об этоя я прочитал в комментариях к указанной выше ф-ции.

setlocale(LC_ALL, 'ru_RU.UTF-8');

Если у вас в проекте используется несколько языков интерфейса, то при переключении, не забудьте переключить локаль. Особенно это важно, если для перевода интерфейса используется ф-ция gettext().

Всем удачи, Максим.

Статья просмотренна 73143 раз, зашло посетителей 26436

рубрика: PHP

7 комментариев в “Парсинг CSV файлов на PHP”

  1. Avatar
    Delphi блог Димаса пишет:

    Парсим csv и tsv файлы в delphi…

    Читая иностранные блоги, наткнулся на пост, в котором поднимается проблема парсинга и отображения в TStringGrid tsv файлов (tab-separated values – значения, разделенные символом табуляции, англ.). В таких файлах элементы в строках разделены знако…


  2. Avatar
    vit пишет:

    Пожалуйста сделайте простой и ясный примерчик того же самого только для asp.net (можно для mvc — будет еще лучше)


  3. Avatar
    maxnag пишет:

    Добрый день!
    Я программист PHP, с технологиями Майкрософт не работал.
    Помочь может ясный ум и Гугл.

    ЗЫ Зачем юзать MVC для простого парсинга файлов?


  4. Avatar
    IceCream пишет:

    Спасибо за пост. Очень помог побороть проблему с кириллицей.


  5. Avatar
    Игорь пишет:

    Поделитесь исходниками!


  6. Avatar
    maxnag пишет:

    Все исходники в мануале http://www.php.net/manual/ru/function.fgetcsv.php


  7. Avatar
    neil пишет:

    вот так будет еще проще

    function getArCsv($name){
    $csv = array_map(‘str_getcsv’, file($name));
    $arResult = array();
    foreach($csv as $k => $c){
    $val = explode(‘;’,$c[0]);
    foreach($val as $key=>$v){
    if($k == 0){
    $n=$val;
    }
    $arResult[$k][$n[$key]] = $v;
    }
    }
    unset($arResult[0]);
    return $arResult;
    }


не публикуется

пример

Оставить комментарий или два:

  

Облако тегов

cli csv dump events form Kohana locale models MySQL mysqldump orm PHP tools trigger validate газ газовый счетчик итоги кеширование переменные

Облако тегов плагина WP Cumulus для WordPress требует для просмотра Flash Player 9 или выше.

Я на твиттере!

  • у твиттера тоже бывают перерывы...

Календарь

Ноябрь 2009
Пн Вт Ср Чт Пт Сб Вс
    Дек »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Сейчас на сайте