将apache日志预匹配到PHP数组


Preg_match apache log to PHP array

我想在PHP数组中获取我的apache日志,将它们放入数据库,我尝试了以下代码:

$log = file_get_contents("path/to/my/apache/access_log");
$regex = '/^('S+) ('S+) ('S+) '[([^:]+):('d+:'d+:'d+) ([^']]+)'] '"('S+) (.*?) ('S+)'" ('S+) ('S+) "([^"]*)" "([^"]*)"$/';
preg_match($regex, $log, $matches);
print_r($matches);

它不起作用,数组是空的,但我不知道为什么。

提前感谢您的帮助!

我能够将该行与进行匹配

/^('S+) ('S+) ('S+) '[([^:]+):('d+:'d+:'d+) ([^']]+)'] '"('S+) (.*?) ('S+)'" ('S+) ('S+)/gm

请注意末尾的m(多行)和g(全局)标志。您可能还需要使用preg_match_all函数,或者更好地一次处理一行文件。