Hello,
das Splitten geht recht simpel ohne jegliche Regular Expressions.
<?php ### split_log.php ###
$fp = fopen('access_log.txt','rb');
#$fp = fopen('C:/programme/xampp/apache/logs/access.log','rb');
$search = array('[', ']', '"');
$replace = array('', '', '' );
$_list = array();
while ($line = fgets($fp, 4000))
{
$line = str_replace($search, $replace, $line);
$_rec = explode(' ', $line, 12);
## ^^ ### Mit dem Explode-Limit kannst Du noch herumspielen
$_list[] = $_rec;
}
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_list,1));
echo "<pre>\r\n";
fclose($fp);
?>
Ich habe es verschiedenen Logdateien von mir ausprobiert und erstaunlicherweise hat es bei allen (@Martin: auch nicht geänderten) Formaten gepasst.
Wenn die Logdatei zu groß wird, kann man die Sätze natürlich nicht mehr in einem Superarray sammeln. Dann macht PHP dicke Backen...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg