所以我刚开始学习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)
答案 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.";
?>
该脚本将读取日志文件并单独保存每一行。然后它遍历所有行,如果搜索词在行中,它将打印该行并将其保存到在脚本末尾计算的匹配数组。