[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Внутренние кавычки в CSV
qetbn
Парсю csv'шник(прайс-лист) и при выводе заголовков заметил что выводятся не все позиции..
Судя по всему проблема в том, что в строках есть кавычки в кавычках.
Помогите составить регулярное выражение чтобы все внутренние кавычки парсились на русские ёлочки cool.gif



Спустя 2 часа, 48 минут, 20 секунд (25.02.2009 - 20:40) sergeiss написал(а):
Покажи, как именно ты его парсишь... Может, тебе и не помешают никакие кавычки?
И еще - какие у тебя разделители в CSV-шнике?

Спустя 48 минут, 9 секунд (25.02.2009 - 21:28) qetbn написал(а):
Вот пример CSV:
"4601546049902","товар","руб",3000,1500,1350,1200,"18%",,
Вот пример строки которая не обрабатывается:
"4601546024183","автор ""название"". Издание ","руб",180,135,120,105,"10%","A1-10-3",23.03.05

Парсю так:
PHP
$row 1;
$flag 0;
$handle fopen('price.csv''r');
while ((
$data fgetcsv($handle1000',')) !== FALSE $flag == 0) {
    
$row++;
    if (
$data[0] == 'раздел 3. имя раздела '$flag 1;
        if (
$data[1]) {
            if (
$row $data[3] != "*") {
                    echo 
$data[1] . " - <b>";
                    echo 
$data[3] . "</b>";
                    echo 
$data[2] . "<br />\n";
            } 
        }
}
fclose($handle);


Спустя 33 минуты, 6 секунд (25.02.2009 - 22:01) sergeiss написал(а):
Во-первых, файл лучше, наверное, будет загрузить через функцию file().

Во-вторых, еще вопрос: внутри строк могут быть запятые? Если нет, т.е. они используются только для разделения элементов, то тогда можно будет смело использовать explode для этого разделения элементов. А с кавычками можно уже будет работать для каждого элемента отдельно, например, удалить ненужные.

Спустя 1 час, 21 минута, 33 секунды (25.02.2009 - 23:23) Viking написал(а):
Цитата
Парсю csv'шник(прайс-лист) и при выводе заголовков заметил что выводятся не все позиции..
Судя по всему проблема в том, что в строках есть кавычки в кавычках.
Помогите составить регулярное выражение чтобы все внутренние кавычки парсились на русские ёлочки

$str = preg_replace("/\"{2}([^\"]+)\"{2}/","«$1»",$str);

Спустя 1 день, 19 часов, 49 минут, 30 секунд (27.02.2009 - 19:12) qetbn написал(а):
Цитата (sergeiss @ 25.02.2009 - 19:01)
Во-первых, файл лучше, наверное, будет загрузить через функцию file().

Во-вторых, еще вопрос: внутри строк могут быть запятые? Если нет, т.е. они используются только для разделения элементов, то тогда можно будет смело использовать explode для этого разделения элементов. А с кавычками можно уже будет работать для каждого элемента отдельно, например, удалить ненужные.

Запятые могут быть.
Работать отдельно -- в каком смысле?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.