Задать вопрос
@abubekovdd

Разбор csv с разделителем табуляция, не работает — почему?

require_once ($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/csv_data.php");
        $csvFile = new CCSVData('R', true);
        $csvFile->LoadFile($_SERVER["DOCUMENT_ROOT"] . '/upload/min.csv');//Файл
        $csvFile->SetDelimiter('\t'); //разделитель
        $bFirstHeaderTmp = $csvFile->GetFirstHeader();  //Заголовок
while ($arRes = $csvFile->Fetch()) { //Перебор CSV файла по полям
$arRes = $GLOBALS["APPLICATION"]->ConvertCharsetArray($arRes, "WINDOWS-1251", SITE_CHARSET);
            echo '<pre>';
            print_r($arRes);
            echo '</pre>';
}

Собственно этот код выдаст такой результат для одного из полей:
Array
(
    [0] => TRANSMASTER UNIVERSAL	45100I	Труба гофрированная универсальная 45X100	ШТУКА	1		336,9	4
)

Т.е получается что табуляция между данными не распознана, так как ожидаемый результат должен быть такой для одной из позиций:
Array
(
[0]=>TRANSMASTER UNIVERSAL
[1]=>45230I
[2]=>Труба гофрированная универсальная 45X230
[3]=>ШТУКА
[4]=>1
[5]=>616,83
[6]=>8
)
Если этот файл сохранить любым редактором с разделителем к примеру ',' - и изменить в коде разделитель, тогда всё отработает как надо. Если иходный файл опять сохранить с разделителем табуляция и внести изменения в код, тогда снова код отрабатывает не верно.
Собственно в чём загвозда?
  • Вопрос задан
  • 1629 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
sabramovskikh
@sabramovskikh
echo 'dfsdf \t dfsdfsd';
Попробуйте вывести это и все станет ясно, если станет не ясно то у вас просто введено 2 символа, а не символ табуляции. Нужно в двойные кавычки
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы