计算字符串之间是否有信息

时间:2018-02-05 20:06:57

标签: php

我正在用PHP编写脚本,以便从电信中心的日志文件生成报告。我设法计算了电话总数(接听,拨打和未接听),但我自己计算错过和完成的电话。

这是我必须计算所有电话的数量。 日志文件为我提供了以下信息:

L1---> Start: 01/08/2017 11:44:32 <br>
L1  6735098700  6735098700  -   -   -   01/08/2017 11:44:32<br>
L1  6735098700  6735098700  -   -   -   01/08/2017 11:44:32<br>
L1  6735098700  6735098700  -   -   -   01/08/2017 11:44:32<br>
L1  6735098700  6735098700  -   -   -   01/08/2017 11:44:33<br>
L1<--- End: 01/08/2017 11:44:40

我所做的只是计算单词Start的出现次数,这意味着已开始通话。

<?php

    if ($text = @file("files/report.txt")) {
        $rpt = implode ("",$text);
        echo substr_count($rpt, 'Start');
    }else{
        echo "<h3>There's no file to read in the directory</h3>";
    }

?> 

现在我需要计算一个未接听电话的时间,这在日志文件中显示如下:

L1---> Start: 01/08/2017 11:45:15
L1<--- End: 01/08/2017 11:45:16

L1之间没有内容 - >开始,L1&lt; - 结束标记。而且我还需要计算所有已完成的电话,这些电话只是全部通话 - 错过了电话。

有人能说出如何管理这个吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来匹配行开头的次数L1---> Start and L1<--- End,就像您说的未接来电次数一样。

preg_match_all('/L1--->\sStart:\s([\d\/\s:]+)L1<---\sEnd/', $rpt, $matches);

然后,为了获得计数,它将是:

count($matches[0]);