PHP从文本文件中搜索关键字(Action'),使用该关键字打印所有行,然后计算打印的行数

时间:2018-03-05 06:17:35

标签: php

所以我刚开始学习PHP,我想从文本文件中搜索某个关键字(Action'),然后用关键字打印所有行,然后计算所有打印的行。

这是我到目前为止所拥有的:

<?php
$searchfor = 'ERR:';
echo "Lines found with the keyword " . "\"" . $searchfor . "\"" . "\n";
$array  =   array_filter(array_map(function($v){
    return (stripos($v,'Action') !== false)? $v : false;  
  },array_filter(file('sampleTest.log',FILE_SKIP_EMPTY_LINES),function($v)
{
    return (!empty(trim($v)));
})));
# This will implode the lines
echo (!empty($array))? implode('',$array) : '';
# This will count the array
echo "<br><br>Total lines printed: " . ((!empty($array))? count($array) : 0);
?>

所以基本上它会查找某个关键字,在这种情况下,来自某个文本文件的“ERR:”,然后用“ERR:”打印所有行,然后计算所有打印的行。

所以我想要做的是寻找关键字(行动')。这是Action和单撇号之后的一个空格。但似乎它没有读撇号(')。 它在CMD中提示我这个错误:

第11行的C:\ xampp \ php \ newTest.php中的

'(T_CONSTANT_ENCAPSED_STRING)

第11行的C:\ xampp \ php \ newTest.php中的

'(T_CONSTANT_ENCAPSED_STRING)

1 个答案:

答案 0 :(得分:0)

以下是您的代码的简化版本。

<?php
$searchfor = "Action '";
$file = file_get_contents("sampleTest.log");
$matches = array();
echo "Lines found with the keyword " . "\"" . $searchfor . "\"" . "\n";

$lines = explode(PHP_EOL,$file);

foreach($lines as $line){
    if (strpos($line, $searchfor) !== false){
        $matches[] = $line;
        echo $line."<br>";
    }
}


if(!empty($matches))
    echo "<br><br>Total lines printed: ".count($matches);
else
    echo "<br><br> No matches.";


?>

该脚本将读取日志文件并单独保存每一行。然后它遍历所有行,如果搜索词在行中,它将打印该行并将其保存到在脚本末尾计算的匹配数组。