我有一個簡短的問題。計算文件中包含字符串的行數的優雅方法
正如標題所說,我想找到一種方法來計算PHP中包含指定字符串的行數。
我知道我可以簡單地打開文件並遍歷所有行並查看是否有任何匹配,但這似乎很麻煩。有沒有更好的辦法?
爲了進一步說明我想做的事,下面是它可能看起來與AWK:
awk '/KEYWORD/ {i++} END { print i }' FILE
謝謝!
我有一個簡短的問題。計算文件中包含字符串的行數的優雅方法
正如標題所說,我想找到一種方法來計算PHP中包含指定字符串的行數。
我知道我可以簡單地打開文件並遍歷所有行並查看是否有任何匹配,但這似乎很麻煩。有沒有更好的辦法?
爲了進一步說明我想做的事,下面是它可能看起來與AWK:
awk '/KEYWORD/ {i++} END { print i }' FILE
謝謝!
這很難說是「累贅」我說:
$c = 0;
foreach(file($filename) as $line)
if (strpos($line, $str) !== false) ++$c;
你也許可以用正則表達式來脫身,但如果你真的想計數線(而不是實例),有一定不是比上述方法更清潔的方式(簡潔明瞭)。
編輯,每首評:
echo substr_count(file_get_contents($filename), $str);
這應該工作。
請注意,當使用500MB +等笨大文件運行時,file()會窒息。如果這在您的Web應用程序中很常見,例如許多併發用戶計算大文件大小,則這會影響性能。
我想要的行,但格式文件將使它,以便沒有差異,如果我計算實例。 – houbysoft 2010-06-27 20:50:40
然後你可以在'file_get_contents()'上使用'substr_count()'或甚至'count(preg_match_all())'。所有這些方法都會將整個文件加載到內存中,這在大文件上是不可取的。 – Matthew 2010-06-27 21:01:55
更改了接受的答案,因爲編輯比dvcolgan的答案更簡單。謝謝。 – houbysoft 2010-06-27 21:07:45