Работа с файлами (чтение)

Astral Man

We Will Rock You
Работа с файлами (чтение), и разбор данных

Привет!

Такая ситуация,
есть файл примерно такого плана:
[1]05002220000552032165032
[2]E0001540321555000
[3]R03210320321
[4]R03120106546564654
[5]R0560651111321321
[6]E0002165051056600
[7]E0003165161654564
[8]3453453454353406351062
[9]0320132013510
[10]051601651065106516251
[11]301251032106510651
[12]01056106510651
[13]E0004031032106561 - Этой строки может не быть
[14]E0005054032130210
[15]0684605130
[16]06510651065
[17]01651651
[18]06320654064

[№] - номер строки

Мне нужно его разобрать.
Первая строка - это информация о файле,
Вторая строка - E0001540321555000 - это группа содержащая информацию:
R03210320321 \
R03120106546564654 } здесь может быть пусто
R0560651111321321 /
Тоже самое и с E0002.... и т.д. всего их 8

Информация содержащиеся в строках разбивается по позициям т.е. первая строка (05002220000552032165032):
Позиция Размер Наименование
1-2 2 Номер
3-8 6 Номер пакета
и т.д.
У каждой группы E000№ свой формат строки, и строк содержащих информацию (идут после нее начиная со след. строки)

Вроде все.
 

voland

Guest
Тебе нужно его разобрать, но я к сожалению, три раза посмотрев запутался в этих тучах цифр и букв... В результате не понял ничего!
 

Astral Man

We Will Rock You
Автор оригинала: voland
Тебе нужно его разобрать, но я к сожалению, три раза посмотрев запутался в этих тучах цифр и букв... В результате не понял ничего!
А немного отредактировал, проставил номера строк.

Строка [1] информация, так скажем о файле и имеет
структуру:

Позиция | Размер | Наименование
1-2 | 2 | Номер
3-8 | 6 | Номер пакета
....
и так до конца строки

Потом идут группы E000№ № = от 1 до 8
у каждой группы своя структура

Позиция | Размер | Наименование
1-5 | 5 | Вид
6-15 | 10 | Порядковый номер
....
и так до конца строки

если группа содержит информацию она начинается со след. строки, каждая строка - инфа
и продолжается до следующей группы.
соответственно у каждой группы своя структура строк и инфой.
Понятно :)

-~{}~ 28.07.04 17:01:

nofx
Я прохожусь по массиву и смотрю каждую строку, если я нахожу E000№ мне нужно узнать есть ли информация для этой группы и запихнуть их в массив, но как мне это сделать до следующего E000№ ?
Чего то я не особо втыкаю.

-~{}~ 28.07.04 17:03:

Автор оригинала: nofx
Astral Man файл в массив
[а потом я запутался сам]
Так вот и я запутался, куда чего ????
 
Я прохожусь по массиву и смотрю каждую строку, если я нахожу E000№ мне нужно узнать есть ли информация для этой группы и запихнуть их в массив, но как мне это сделать до следующего E000№ ?
тоесть надо распихать на массивы

от E000№ до следующего E000№ ?

так?
 

Astral Man

We Will Rock You
Автор оригинала: nofx
тоесть надо распихать на массивы

от E000№ до следующего E000№ ?

так?
Ну это я с твоих слов понял.
Думаю что это решение, но как это сделать? Мне все это в БД кидать.
 
но как это сделать?
поехали.
когда забиваем строки файла в массив у нас создается массив,
типа
0 => "строка 1",
1 => "строка 2",
2 => "строка 3",
3 => "строка 4",
4 => "строка 5" и тд

у нас есть ключи в виде цифр...

теперь мы прогоняем этот массив в цикле на нахождение в каждое строке E000№ и если находим, запоминаем ключ массива в значении которого нашли E000№

после этого мы точно знаем с какого по какой ключ относятся стороки для кождого E000№

тоесть мы можем создавать массивы отдельно для каждого E000№

так ?
 

Astral Man

We Will Rock You
nofx
Вроде да, а потом играемся с каждым массивом отдельно.

Пробую.......

Спасибо.
 
PHP:
$all = file("111.txt");
foreach ($all as $k => $v){
        $pos = strpos($v,'E000');
        if($pos !== false){
                $find[]=$k;
                }

        }
print_r($find);
получили ключи массива в значениях которых есть E000

на основании этого создаем новые...

успехов... :)
 

Astral Man

We Will Rock You
Автор оригинала: nofx
PHP:
$all = file("111.txt");
foreach ($all as $k => $v){
        $pos = strpos($v,'E000');
        if($pos !== false){
                $find[]=$k;
                }

        }
print_r($find);
получили ключи массива в значениях которых есть E000

на основании этого создаем новые...

успехов... :)
Можно тебя еще помучить?

Как мне пройтись по масиву с [1] по [31] ключ?
 

SiMM

Новичок
nofx, для обхода с 1 по 31 (если нет пропусков) существует [m]for[/m] - извращаться [m]foreach[/m]ем не стоит.
 
Сверху