Показать сообщение отдельно
  #10 (permalink)  
Старый 11.12.2016, 15:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$csv = ['mail;givenName;sn;telephoneNumber;createTimestamp'];

foreach(file('data.txt', FILE_SKIP_EMPTY_LINES ) as $v) {
    if(preg_match('/mail|givenName|sn|telephoneNumber|createTimestamp/', $v)) {
        $v = array_map('trim', explode(':', $v));
        $arr[$v[0]] = $v[1];
    }
    
    if(count($arr)==5) {
        $csv[] = implode(';', array_values($arr, 0));
        $arr = [];
        continue; 
    }
    
}

//в CSV формат
$csv = implode("\r\n", $csv);

//сохранем в файл, который потом можно будет скачать
file_put_contents('data.csv', $csv);

//либо можно сразу по запросу клиента отдавать на скачивание, не сохраняя в файл


Но учитывать то о чем говорилось ранее, ибо корректность вложения по ключам в коде не проверяется. Также не проверяется последовательность ключей в исходном файле, и если последовательность может быть произвольная, то перед добавлением в массив $scv нужно будет отсортировать массив $arr по ключам.

Переменная $arr не объявляется сразу, но если выключены предупреждения, то ничего страшного, главное чтобы она не была определена ранее.

Последний раз редактировалось laimas, 11.12.2016 в 15:28.
Ответить с цитированием