Сделано в Раскрутке

Архив эхоконференции RU.PHP

- RU.PHP ------------------------------------------------------------- RU.PHP -
 Msg  : #10094 [514]
 От   : Mithgol the Webmaster         2:6023/802.24       27 августа 04, 10:40
 Кому : Cyrill Malevanov                                  30 сентября 04, 01:01
 Тема : Парсим логи Апача регэкспами... э-э-э, не по-русски выразился, да?
-------------------------------------------------------------------------------
Так было 13:49 04 Aug 04 написано от Cyrill Malevanov к JokeR[FHC]:

 JF>> Есть строка:
 JF>> 127.0.0.1 - - [23/Jan/2004:18:22:56 +0300] "GET / HTTP/1.1" 500 644
 JF>> Hадо разорвать ее на составляющие, а имеено
 JF>> ip,?,?,date,query,answer,traf
 JF>> split здесь явно не поможет.. понятно, что надо использовать regexp.
 JF>> Помогите!

 CM> ereg("[[:digit:]]+.[[:digit:]]+.[[:digit:]]+.[[:digit:]]+ - - [.*]
 CM> \".*\" [[:digit:]]+ [[:digit:]]+", $string,  $regs);

 CM> оно? писалось сходу, не проверял.

Даже я вижу, что не оно. Точки, квадратные скобки, плюс -- это всё специальные 
символы языка регулярных выражений: из исходной строки переносить их в образец 
просто так не следует.

Как насчёт такого:

(([12][0-9][0-9]|[0-9]?[0-9])\.([12][0-9][0-9]|[0-9]?[0-9])\.([12][0-9][0-9]|[0
-9]?[0-9])\.[12][0-9][0-9]|[0-9]?[0-9]) - -
\[([0-3][0-9]/[JFMASOND][aepuco][nbrylgptvc]/[1-2][0-9]{3}:[0-2][0-9]:[0-5][0-9
]:[0-5][0-9] \+[0-9]{4})\] \"([A-Za-z_.0-9/%]+)\" ([0-9]{3}) ([0-9]{3})

Только что сам придумал.

Вижу пока только одну возможность уточнения этого регулярного выражения: вместо
([12][0-9][0-9]|[0-9]?[0-9]) во всех четырёх случаях правильнее было бы писать 
(25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9]) -- чтобы IP-адреса отыскивались в пределах 
от 0 до 255 по каждому из четырёх чисел, а не от 0 до 299.


Ceterum censeo Diptaunum esse delendam!                  http://mithgol.pp.ru/
Mithgol the Webmaster.  [Team В эхолисте ,,ё`` уместим]  [Team А я меняю subj]

... Кто виноват, что хоббитам улыбнулась удача?
--- Эшелону:  OIR  Претория  M-14  загадка   Bletchley Park   Clandestine  NSO
 * Origin: Гологpафическая pоза осколочная -- тестовый обpазец (2:6023/802.24)


При переходе по баннеру - скидка 25% на первый месяц обслуживания!
Самый простой способ получить ROOT-доступ
При переходе по баннеру - скидка 25% на первый месяц обслуживания!