2010-06-27 55 views
1

我有一個簡短的問題。計算文件中包含字符串的行數的優雅方法

正如標題所說,我想找到一種方法來計算PHP中包含指定字符串的行數。

我知道我可以簡單地打開文件並遍歷所有行並查看是否有任何匹配,但這似乎很麻煩。有沒有更好的辦法?

爲了進一步說明我想做的事,下面是它可能看起來與AWK:

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

謝謝!

回答

1

這很難說是「累贅」我說:

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

你也許可以用正則表達式來脫身,但如果你真的想計數線(而不是實例),有一定不是比上述方法更清潔的方式(簡潔明瞭)。

編輯,每首評:

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

這應該工作。

+0

我想要的行,但格式文件將使它,以便沒有差異,如果我計算實例。 – houbysoft 2010-06-27 20:50:40

+0

然後你可以在'file_get_contents()'上使用'substr_count()'或甚至'count(preg_match_all())'。所有這些方法都會將整個文件加載到內存中,這在大文件上是不可取的。 – Matthew 2010-06-27 21:01:55

+0

更改了接受的答案,因爲編輯比dvcolgan的答案更簡單。謝謝。 – houbysoft 2010-06-27 21:07:45

0

請注意,當使用500MB +等笨大文件運行時,file()會窒息。如果這在您的Web應用程序中很常見,例如許多併發用戶計算大文件大小,則這會影響性能。

相關問題