过滤日志PHP


Filter logs PHP

我正在PHP上编写一段代码,该代码从日志中读取行,并根据需要的日期回显给用户。

这是我的代码,

<?php
$x=0;
$filestring= file_get_contents( "argh.txt" ); // get the contents, and echo it out.
$filearray = explode("/n", $filestring);
    while (list($var,$val) = each($filearray)) {
        print "$val <br/>";
        ++$x;
    }
?>

这是我的输出:

00:31:32,subID=1,SC=22919,Ctnt=Talk
00:31:45,subID=1,SC=22919,Ctnt=ON
00:31:45,subID=2,SC=22919,Ctnt=INVITE 0196966467
00:31:45,subID=1,SC=22919,Ctnt=Alright
00:31:45,subID=2,SC=22919,Ctnt=INVITE 0146966467
00:31:45,subID=2,SC=22919,Ctnt=INVITE 0166966467

我希望根据子id和Ctnt=Invite显示结果(筛选和显示结果,子id可以是任何东西,但Ctnt必须根据邀请0*进行筛选)后果例如:subID=1,Ctnt=

以下是您提供的代码中的一些内容,请尝试一下:

<?php
$x=0;
$filter_subID = $_POST['subID'];
$filter_Ctnt = $_POST['Ctnt'];
$filestring= file_get_contents( "argh.txt" ); // get the contents, and echo it out.
$filearray = explode("/n", $filestring);
    while (list($var,$val) = each($filearray)) {
        $match_sub = false;
        $match_ctnt = false;
        $csv = explode(',',$val);
        unset($csv[0]);
        $csv = array_values($csv);
        foreach($csv as $logvals){
            list($field,$value) = explode('=',$logvals);
            if(trim($field) == 'subID' && trim($value) == $filter_subID){
                $match_sub = true;
            }
            if(trim($field) == 'Ctnt' && trim($value) == $filter_Ctnt){
                $match_ctnt = true;
            }
        }
        if($match_sub && $match_ctnt) print "$val <br/>";
        ++$x;
    }
?>