0

次のようなテキストファイルがあります。

================================================
[Feb 11 2013 13:17:14] - some string here and here
General options - [something]
Line y
================================================
Line 1
Line 2
Line 3
Line 4
Line 5     
Something here. Error message: ReferenceError: applyMetadataTemplate is undefined; line: 625  
Line 7
================================================
[Feb 11 2013 16:07:14] - some string here and here
General options - [something]
Line y
================================================
Line 1
Line 2
Line 3
Line 4
Line 5     
Something here. Error message: ReferenceError: applyMetadataTemplate is undefined; line: 625  
Line 7

ここで、このファイルを逆方向​​に読みたいと思います。新しい日付のレコード内で見つかったエラーごとに、何かをする必要があります。助けが必要です 1) 日付に遭遇するまでファイルを逆方向​​に読み取り、その日付を保存する、2) それまでのすべての行を文字列として取得し、その中にエラーという単語を見つける。注: 各レコードの行数は異なる場合があり、必ずしもエラーという単語が含まれているとは限りません。それは、「日付を見つけて一致させ、そのレコード内でエラーを見つける」タイプの問題です。

4

1 に答える 1

1
$matches = array();    
$file = file("log.txt");
$file = array_reverse($file);
foreach($file as $f){
    if (stripos($f, "[") !== false) { 
        // Check string for date by regex 
        preg_match('/(\D*) (\d{2}) (\d{4})/', $f, $matches);

        // Check that parts of the date were found
        if(count($matches) > 2) {
            echo $f; //print the line
            break;
        }
    }
}

ファイルを読み取り、それを配列に変換し、逆方向に走査するために配列を逆にしてから、最後の日付を出力します。

于 2013-02-12T16:05:15.723 に答える