Wie zu analysieren Apache-logs mithilfe von regex in PHP
Ich versuche zu splitten, ist dieser string in PHP:
11.11.11.11 - - [25/Jan/2000:14:00:01 +0100] "GET /1986.js HTTP/1.1" 200 932 "http://domain.com/index.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 GTB6"
Wie kann aufgeteilt in IP, Datum, HTTP-Methode, der domain-name und browser?
Dies ist eine schlechtere version dieser Frage, die geht in full-parsing: stackoverflow.com/questions/7603017/...
InformationsquelleAutor streetparade | 2010-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diesem log-format scheint zu sein, die Apache combined log format. Versuchen Sie, diese regulären Ausdrücke:
Den passenden Gruppen sind wie folgt:
Aber die domain ist dort nicht aufgeführt. Die zweite Zeichenfolge in Anführungszeichen ist die Referer Wert.
Verwenden
preg_match_all
und Sie bekommen alle Spiele:preg_match_all('…', $str, $matches)
auch diese regex nicht kompilieren... es gibt eine Runde Klammer fehlt 😉
Dies ist falsch, der auth-user-Bereich (3., %u) kann ein Leerzeichen enthalten.
Würden Sie bitte ein update bereitstellen Vorschlag?
InformationsquelleAutor Gumbo
Sollten Sie einen regulären Ausdruck ein tutorial. Aber hier ist die Antwort:
Kümmern, es ist nicht der domain-name in der log aber der HTTP-referer.
InformationsquelleAutor KARASZI István
Hier einige Perl, nicht PHP, aber der regex zu verwenden ist die gleiche. Diese regex funktioniert, zu analysieren alles, was ich gesehen habe; - clients senden einige bizarre Anfragen:
InformationsquelleAutor Daniel S. Sterling
Verwendung:
InformationsquelleAutor recurse