如何搜索文件并在PHP中返回结果和行号的数组?

时间:2015-01-15 08:45:51

标签: php arrays

如何搜索文件并返回结果数组,以便我可以在PHP的集合中使用它?

因此,例如,假设我有一个.txt文件,其中包含:

hellohello
hihi
heywhats up
hello hey whats up
hello

我想搜索所有带有hello及其行号的事件,然后将其作为数组返回,以便我可以在数据收集器中使用它。

因此,它将返回行号和行,如:

$results = array
(
array('1', 'hellohello'), 
array('4', 'hello hey whats up'), 
array('5', 'hello'),
);

我的想法是file_get_contents

所以,例如......

$file = 'example.txt';

function get_file($file) {
  $file = file_get_contents($file);
  return $file;
}

function searchFile($search_str) {
  $matches = preg_match('/$search_str/i', get_file($file);
  return $matches;
}

1 个答案:

答案 0 :(得分:2)

作为替代方案,您还可以使用file()函数,以便将整个文件读入数组。然后你可以循环,然后搜索。粗略的例子:

$file = 'example.txt';
$search = 'hello';
$results = array();
$contents = file($file);
foreach($contents as $line => $text) {
    if(stripos($text, $search) !== false) {
        $results[] = array($line+1, $text);
    }
}
print_r($results);

旁注:stripos()只是一个例子,您仍然可以使用您的其他方式/偏好来搜索特定行的针。