优雅的方式来计算文件中包含字符串的行数

时间:2010-06-27 20:29:11

标签: php text-files matching

我有一个简单的问题。

正如标题所说,我想找到一种方法来计算PHP中包含文件中指定字符串的行数。

我知道我可以简单地打开文件并遍历所有行,看看是否有匹配,但这看起来有点麻烦。还有更好的方法吗?

为了进一步说明我想做什么,以下是awk的外观:

awk '/KEYWORD/ {i++} END { print i }' FILE

谢谢!

2 个答案:

答案 0 :(得分:1)

这对我来说似乎很“麻烦”:

$c = 0;
foreach(file($filename) as $line)
  if (strpos($line, $str) !== false) ++$c;

你可能能够使用正则表达式,但如果你真的想要计算行数(而不是实例),那么肯定不会比上述方法更简洁(简洁和清晰)。

按照第一条评论编辑:

echo substr_count(file_get_contents($filename), $str);

这应该有效。

答案 1 :(得分:0)

请注意,当使用诸如500MB +等愚蠢的大文件运行时,file()会窒息。如果这在您的Web应用程序中很常见,例如许多计算大文件大小的并发用户,则会影响性能。