[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка CSV файла
Tamplier
Есть такой вот код:
PHP
function LoadFromCVS($file){
    global 
$Clear,$idName;
    
$lines=file($file);
    
$ColumnNames=explode(';',trim(array_shift($lines)));
    foreach (
$ColumnNames as $j=>$Column$ColumnNames[$j]=trim($Column);
    foreach (
$lines as $i=>$row){
        
$NewRow=explode(';',trim($row));
        
$t=join($NewRow);
        if(empty(
$t)) CONTINUE;
        foreach (
$ColumnNames as $j=>$Column$NewCatalog[$i][$Column]=trim($NewRow[$j]);
        if(
trim($NewCatalog[$i]['header'])==trim($t)){
            
$j=$i;
            do {
$j--;} while (!$NewCatalog[$j]);
            
$NewCatalog[$j]['header'].="\n".$NewCatalog[$i]['header'];
            unset(
$NewCatalog[$i]);
            CONTINUE;
        }
        if(
$NewCatalog[$i]['cost']>OR !empty($NewCatalog[$i]['currency']))
            
$NewCatalog[$i]['child_count']=-1;
        if(
$Clear=='update' AND !$NewCatalog[$i][$idName]) {
            echo 
"Ошибка: не найден идентификатор в строке $row!";
            
array_pop($NewCatalog);
        }
    }
    return 
$NewCatalog;
}

Все вроде бы хорошо, но проблемка возникла с текстовыми значениями в кавычках на несколько строк. Кто знает как решить быстро и безболезненно?



Спустя 31 минута, 46 секунд (26.05.2009 - 16:48) Tamplier написал(а):
Хм...
Проблема сузилась до совсем маленького решения, но вот придумать что-то никак:
PHP
$file=file_get_contents($FileName);
    
$file=preg_replace("{\"([^\"]*)\n([^\"]*)\"}","\"$1$2\"",$file);
    
$lines=explode("\n",$file);


Данное решение склеивает все значения разбитые на 2 строки внутри "кавычек". Осталось найти как склеить более двух строк.
Плиз подкиньте идейку!

Спустя 45 минут, 3 секунды (26.05.2009 - 17:33) waldicom написал(а):
Простите мне мою серость, а fgetcsv() не пробовали?
Быстрый ответ:

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