- 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% на первый месяц обслуживания! При переходе по баннеру - скидка 25% на первый месяц обслуживания!