preg_match确切的单词并打印出找到结果的整行

时间:2011-02-15 06:27:48

标签: php preg-match

我很难理解如何做到这一点。

我想搜索一个单词,然后我希望搜索返回单词以及找到该单词的行上的所有内容。

这个词需要区分大小写,所以搜索TOM不会随着结果返回Tom。

这是我到目前为止所尝试过的。

$contents = file_get_contents($file);
$pattern = preg_quote($word, '/');
$numInt  = 0;
$pattern = "/^.*$pattern.*\$/m";
if(preg_match_all($pattern, $contents, $matches))
{
    $numInt = count($matches[0]);
}

当我通过我的函数运行它时会返回我想要的结果,但我注意到它在不同的关键字中是不一致的。

在我的测试文本文件中,我有INT (x18),我的函数返回18作为计数。但是如果我使用关键字MORNING (x29),则函数返回31,这在技术上是正确的,因为有2个实例使用morning

1 个答案:

答案 0 :(得分:2)

嗯,你可以避免一起使用正则表达式完成这项任务。

这是我掀起的一些代码:

<?php 
$contents = file_get_contents($file);

#standardise those line endings
$contents = str_replace(array("\r","\r\n","\n\r","\n"),"\n",$contents);
$lines = explode("\n", $contents);

#find your result
$result = $line_num = array();
foreach($lines as $line_num => $l)
  if(strpos($l, $word)) {
   $result[] = $l;
   $line_nums[] = $line_num;
  }

echo "<pre>";
print_r($result);
echo "<br>Count:".count($result);