Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Простой csv парсер



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

<?require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
CModule::IncludeModule('iblock');

$lines = file($_SERVER["DOCUMENT_ROOT"]."/upload/phones.csv");
?>
<table>
<?
$el = new CIBlockElement;
foreach ($lines as $line_num => $line) {
    if($line_num == 0) continue; //заголовок не загружаем
    //if($line_num>10) break; //для пробы первых 10

    $line = mb_convert_encoding($line, 'UTF-8','Windows-1251'); //кодировку настраиваем
    $arLine = explode(";", $line); //разделитель в файле, у меня точка с запятой
    $arProps = [
       1963 => $arLine[2], //тип вызова
       1964=> $arLine[3],//кто звонил
       1965 => $arLine[4],//на какой номер
       1966=>$arLine[5],//кому
       1967=>$arLine[6]//длительность       
    ];
    $arItem = [
       "NAME" => $line_num,
       "ACTIVE_FROM" => $arLine[0].' '.$arLine[1],
       "IBLOCK_SECTION_ID" => false,          // элемент лежит в корне раздела
     "IBLOCK_ID"      => 233,
     "PROPERTY_VALUES"=> $arProps
    ];
    $el->Add($arItem);

    
    ?>
    <tr>
       <?foreach ($arLine as $td){?>
          <td><?=$td?></td>
       <?}?>
    </tr>
    <?
}
?>
</table>
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!