Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.146.37.35] |
|
Сообщ.
#1
,
|
|
|
имеются такие строчки
^92(21/35/2002)**&[21:50:20]@Comment: Text String ^-21/35/2002*$21:50:20 ^*21/35/2002*DX145&[21:50:20]@Comment: Text String надо вытянуть дату время и если есть коммент. вот как я это пытаюсь сделать <?php $data_arr=array('^92(21/35/2002)**&[21:50:20]@Comment: Text String', '^-21/35/2002*$21:50:20', '^*21/35/2002*DX145&[21:50:20]@Comment: Text String'); for ($i=0; $i<=2; $i++) { // $date=eregi('(2)[0-9/]+', $data_arr[$i], $date_output); // $time=eregi('(2)[0-9]+(:)[0-9]+(:)[0-9]+', $data_arr[$i], $time_output); // $comment=eregi('(Comment)[[:print:]]+', $data_arr[$i], $comment_output); $s=eregi("[0-9/]{10}[^]*[][0-9]+(:)", $data_arr[$i], $ss); // echo $date_output[0].' '.$time_output[0].' '.$comment_output[0].'<br>'; // $comment_output=0; echo $ss[0].'<br>'; } ?> те строки что закоментированны прекрасно все делают, но как сделать так чтобы было всего одно регулярное выражение ??? |
Сообщ.
#2
,
|
|
|
Для начала - PCRE, Регулярные выражения, Часть I + Регулярные выражения, Часть II
О POSIX лучше забудь как о страшном сне |
Сообщ.
#3
,
|
|
|
Держи:
Цитата ((.*)((\d\d)\/(\d+)\/(\d+))+(.*)((\d\d):(\d+):(\d+))+((.*)(@Comment:\s(.*))+)*) Приход: $2 - мусор перед датой $3 - дата (полная со слешами без скобок и т.п.) $4 - день $5 - месяц $6 - год $7 - мусор между датой и временем $8 - время (полное с двоеточием) $9 - часы $10 - минуты $11 - секунды $13 - коммент с мусором впереди $14 - сам мусор (тот что перед комментом) $15 - ну и сам текст комента При работе: - не важно какой мусор и где - не важно есть ли скобки у даты и времени - не важно есть ли комент в строке Что бы всё правильно работало - нужно включить "жадный" режим... Напишешь - получилось или нет... Я тут тусуюсь редко, так что - лучше пиши сюда: Студенческий форум ЮРГТУ |
Сообщ.
#4
,
|
|
|
да все работает классно
спасибо! |