php
  • regex
  • apache
  • preg-match
  • 2016-07-22 34 views 0 likes 
    0

    我想我的Apache在PHP陣列日誌,把它們放在數據庫中,我嘗試這樣的代碼:的preg_match Apache日誌到PHP數組

    $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); 
    

    它沒有工作,數組是空的,但我不知道爲什麼。

    在此先感謝您的幫助!

    +0

    因此,將正則表達式分解成更小的部分,並找出哪些部分沒有正常工作。這是你必須做的事情。 –

    回答

    0

    我能線與

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

    注意m(多)昂克(全局)標誌在末端相匹配。您可能還需要使用preg_match_all函數,或者更好地一次處理一行文件。

    相關問題