Разобрать журнал Apache в PHP с помощью preg_match

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

Формат журнала:

10.1.1.150 - - [29/September/2011:14:21:49 -0400] "GET /info/ HTTP/1.1" 200 9955 "http://www.domain.com/download/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"

Мое регулярное выражение:

preg_match('/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/',$log, $matches);

Теперь, когда я печатаю:

print_r($matches);

Array
(
    [0] => 10.1.1.150 - - [29/September/2011:14:21:49 -0400] "GET /info/ HTTP/1.1" 200 9955 "http://www.domain.com/download/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"
    [1] => 10.1.1.150
    [2] => -
    [3] => -
    [4] => 29/September/2011
    [5] => 14:21:49
    [6] => -0400
    [7] => GET
    [8] => /info/
    [9] => HTTP/1.1
    [10] => 200
    [11] => 9955
    [12] => "http://www.domain.com/download/"
    [13] => "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; de-at) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"
)

, я получаю: «http://www.domain.com/download/» и то же самое для пользователя агент. Как мне избавиться от этих " в регулярном выражении? Бонус (Есть ли какой-нибудь быстрый способ легко вставить дату / время)?

Спасибо

28
задан Tech4Wilco 29 September 2011 в 20:34
поделиться