Minor
Постоялец
- Регистрация
- 16 Авг 2012
- Сообщения
- 260
- Реакции
- 111
Перевод строки мешает корректному explode, кроме того - ; это очень частый разделитель, могут быть конфликты.
(Это ж я просто привел пример как можно сделать)
Сделаем чуть по другому - см. комментарии
Конечно можно было сделать элегантнее - сразу раскидывать в массивы по меткам, но я решил уже текущий код доработать, т.к. он работал.
(Это ж я просто привел пример как можно сделать)
Сделаем чуть по другому - см. комментарии
Код:
<?php
$lines = file('Export_to_1c.txt');
$writedoc=false; // метка начала записи
$splitter='###'; //разделитель
$documents=array();
foreach ($lines as $line_num => $line) {
$line=trim($line); // уберем переносы строк
$line = iconv('windows-1251', 'UTF-8', $line);
if (strpos(' '.$line, 'Номер=')) { //Если строка содержит метку начала документа - то ставим метку начала записи в тру
$writedoc=true;
$tmpdoc='';
}
if ($writedoc) {
$tmpdoc.=$line.$splitter; //пишем документ в строку
}
if (strpos(' '.$line, 'КонецДокумента')) { //Ставим метку начала записи в false
$writedoc=false;
$rawdocuments[]=$tmpdoc; //Сбрасываем документ в массив
}
}
print_r($rawdocuments); //выводим массив с документами в одной строке
foreach ($rawdocuments as $key=>$value)
{
$documents[$key] = explode($splitter, $value);
}
print_r($documents); //массив документов
?>
Конечно можно было сделать элегантнее - сразу раскидывать в массивы по меткам, но я решил уже текущий код доработать, т.к. он работал.