Разбить строку на переменные

steels

Новичок
Разбить строку на переменные

есть такие строки
060503 12:54:00 1 Connect root@localhost on
1 Query SELECT VERSION() AS version
1 Query SET NAMES cp1251
1 Query SET collation_connection = 'cp1251_general_ci'
1 Query SHOW SESSION VARIABLES LIKE 'collation_connection'
1 Query SHOW SESSION VARIABLES LIKE 'character_set_connection'
1 Query SHOW CHARACTER SET
1 Query SHOW COLLATION
1 Init DB phpmyadmin
1 Query SHOW TABLES FROM `phpmyadmin`
1 Init DB phpmyadmin
060503 12:57:32 1 Query SHOW FIELDS FROM `phpmyadmin`.`pma_column_info`
1 Query SHOW DATABASES
1 Quit
2 Connect root@localhost on
2 Query SELECT VERSION() AS version
т.е. по каждой строке мне нужно получить
$Time $Id $Command $Argument


как добиться? хотел было использовать explode, но не везде стоит время
"060503 12:57:32",
а мне надо чтобы в каждом стояло время.
 

Romantik

TeaM PHPClub
Время это у тебя точка обработки. по шаблону времени и используй. Т.е. если не строки, содержащей время то присвоить предыдущее время.
 

steels

Новичок
Автор оригинала: Romantik
Время это у тебя точка обработки. по шаблону времени и используй. Т.е. если не строки, содержащей время то присвоить предыдущее время.
а поподробней можно, я новичок в PHP :(
 

Romantik

TeaM PHPClub
steels
ты парсишь файл и значит в определенный момент у тебя в ресультате оказывается время.
далее обходя файл ты ищешь по шаблону время.
Если есть время значит новое значение, если нет- старое.
 

steels

Новичок
Автор оригинала: Romantik
steels
ты парсишь файл и значит в определенный момент у тебя в ресультате оказывается время.
далее обходя файл ты ищешь по шаблону время.
Если есть время значит новое значение, если нет- старое.
а пример? что использовать?
 

ybilevych

Новичок
а поподробней можно, я новичок в PHP
Новичок, который знает explode - это нонсенс! Шутка

Судя по Ваших постах, Вы новичок не столько в PHP, сколько в алгоритмах.
Даю рыбу - думаю, скриптик сами напишете
1. Получить строку
2. Разбить (explode) по пробелу
3. Если 1-й элемент массива - дата и 2-й - время, тогда:
3а. Запомнить дату/время в переменной
3б. Время искать во 2-м элементе массива, ID - в 3-м, Command - в 4-м, Argument - в 5-м
иначе:
3а. Время взять из переменной
3б. ID найти в 1-м элементе массива, Command - в 2-м, Argument - в 3-м

И повторить все это для каждой строки
Да, и не забудьте - индексы массива начинаются с 0
 

steels

Новичок
Автор оригинала: ybilevych
Новичок, который знает explode - это нонсенс! Шутка

Судя по Ваших постах, Вы новичок не столько в PHP, сколько в алгоритмах.
Даю рыбу - думаю, скриптик сами напишете
1. Получить строку
2. Разбить (explode) по пробелу
3. Если 1-й элемент массива - дата и 2-й - время, тогда:
3а. Запомнить дату/время в переменной
3б. Время искать во 2-м элементе массива, ID - в 3-м, Command - в 4-м, Argument - в 5-м
иначе:
3а. Время взять из переменной
3б. ID найти в 1-м элементе массива, Command - в 2-м, Argument - в 3-м

И повторить все это для каждой строки
Да, и не забудьте - индексы массива начинаются с 0
вроде бы сделал
только встает 2 ой вопрос - Как справиться с этим

я делаю
explode(" ", $text, 5);

в этой строке "1 Init DB phpmyadmin" получается так
[0] =>
[1] =>
[2] => 1
[3] => Init
[4] => DB phpmyadmin
а нужно так

[0] =>
[1] =>
[2] => 1
[3] => Init DB
[4] => phpmyadmin
как это сделать?
 

StUV

Rotaredom
если таких случаев немного (т.е. заранее известен формат и содержимое ограниченного набора строк), то можно простой проверкой значений изменять функцию разбивки

если же рассматривается "общий случай" с кучей возможных вариантов разбивки - то (имхо) без регулярок не обойтись
 
Сверху