Анализируемая строка:
Код: Выделить всё
Apr 5 10:01:01 mail postfix/smtpd[48978]: NOQUEUE: reject: RCPT from unknown[10.0.33.99]: 554 5.7.1 <rt.su>: Helo command rejected: Your server configured incorrectly; from=<> to=<root@rt.su> proto=ESMTP helo=<rt.su>
Код: Выделить всё
if ( preg_match('/(.*) [A-Za-z0-9-_]+ postfix\/smtpd\[[0-9]+\]: NOQUEUE: reject: (.*)/i', $buffer, $match) ){//3
Структура массива $match получается следующая:
Код: Выделить всё
Array
(
[0] => Apr 5 11:31:00 mail postfix/smtpd[49591]: NOQUEUE: reject: RCPT from unknown[10.0.33.99]: 554 5.7.1 <rt.su>: Helo command rejected: Your server configured incorrectly; from=<> to=<root@rt.su> proto=ESMTP helo=<rt.su>
[1] => Apr 5 11:31:00
[2] => RCPT from unknown[10.0.33.99]: 554 5.7.1 <rt.su>: Helo command rejected: Your server configured incorrectly; from=<> to=<root@rt.su> proto=ESMTP helo=<rt.su>
Хочу дополнительно разбить элемент массива $match[1] на подэлементы (отдельно месяц, день, час).
Написал нечто следующее:
Код: Выделить всё
if ( preg_match('/(\w\w\w)\s+(\d)\s(\d\d:\d\d:\d\d) mail postfix\/smtpd\[[0-9]+\]: NOQUEUE: reject: (.*)/i', $buffer, $match) )