我正在用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; - 结束标记。而且我还需要计算所有已完成的电话,这些电话只是全部通话 - 错过了电话。
有人能说出如何管理这个吗?
感谢。
答案 0 :(得分:0)
您可以使用正则表达式来匹配行开头的次数L1---> Start and L1<--- End
,就像您说的未接来电次数一样。
preg_match_all('/L1--->\sStart:\s([\d\/\s:]+)L1<---\sEnd/', $rpt, $matches);
然后,为了获得计数,它将是:
count($matches[0]);