PHP读取特定的选项卡行列并将其设置为循环

时间:2019-01-26 08:44:41

标签: php

我正在使用PHP从文本文件读取数据。

这里是log data

和PHP:

$fileAccept = file_get_contents("\\\\192.168.184.13\\Reports\\".$dModel['MODEL_NAME'].$source."\\Accept\\Accept_".$dDtl['MODEL_CODE']."_".$dateCode."_".$dDtl['TS_CODE'].".txt");

$linesAccept = explode("\n",$fileAccept);
$rowsintimespanAccept = 0;

for($i = $readRowAfter; $i < count($linesAccept); $i++)
{
    // if the fileAccept is "Tue, Sep 18<tab>2018<tab>23:59:53<tab>"
    $dateobjAccept = DateTime::createFromFormat($createFromFormat, $linesAccept[$i]);

    // check if date is in your Timespan
    if($dateobjAccept < $toDateTime && $dateobjAccept > $fromDateTime)
    {
        $rowsintimespanAccept++; // count if in timespan
    }
}

for($i = 0; $i < $rowsintimespanAccept; $i++)
{
    //I need get date time here for each
}

该代码正常运行。

但是现在我想从文本文件中获取每个日期时间。

有什么线索怎么做?

enter image description here

2 个答案:

答案 0 :(得分:1)

在$ fileAccept之后尝试此操作

$linesAccept = explode("\n", $fileAccept);
$readRowAfter = 9;
$createFromFormat = 'D, M j  Y H:i:s';
$outputDateFormat = 'Y-m-d H:i:s';
$inTimespan = [];

for($i = $readRowAfter; $i < count($linesAccept); $i++)
{
    $lineData = explode("\t", $linesAccept[$i]);

    if (!isset($lineData[0]) || !isset($lineData[1])) {
        continue;
    }

    $dateString = $lineData[0] . " " . $lineData[1];

    $dateObj = DateTime::createFromFormat($createFromFormat, $dateString);

    // check if date is in your Timespan
    if($dateobjAccept < $toDateTime && $dateobjAccept > $fromDateTime)
    {
        $inTimespan[] = $dateObj->format($outputDateFormat);
    }
}

foreach ($inTimespan as $date) {
    echo $date;
    echo '<br/>';
}

$ createFromFormat ='D,M j Y H:i:s';其中的 j 可能是 d ,但我们现在不知道,因为您只给出了两位数的天数,因此如果第一天为01时它会中断-然后将其更改为 d

答案 1 :(得分:0)

除非我有误解,否则您的要求是能够捕获日志文件中每一行的部分并以某种方式使用它?最简单的方法(也许)是使用listexplode,如下所示。

$logfile='c:/temp/Accept_10039787_012619_Ts1.txt';

$lines=file( $logfile );

foreach( $lines as $index => $line ){
    if( $index >=10 ){
        if( !empty( $line ) ){

            /* explode the string on TAB, capture two elements of interest as variables */
            list( $date, $time, , , )=explode("\t",$line );

            /* create a DateTime object */
            $oDate=DateTime::createFromFormat('D, M j  Y H:i:s', sprintf('%s %s', $date, $time ) );

            /* do somethig with the DateTime object... */
            echo $oDate->format('Y-m-d H:i:s') . '<br />';
        }
    }
}

输出:

2019-01-26 00:00:09
2019-01-26 00:00:23
2019-01-26 00:00:37
2019-01-26 00:00:50
2019-01-26 00:01:04
2019-01-26 00:01:17
2019-01-26 00:35:33.... etc etc cont'd