Услуги профессионального Битрикс-программиста

Простой 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>