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

Php 计算文件中包含字符串的行数的优雅方法,php,text-files,matching,Php,Text Files,Matching,我有一个简短的问题 正如标题所说,我想找到一种方法,用PHP计算文件中包含指定字符串的行数 我知道我可以简单地打开文件,循环所有的行,看看是否有匹配的,但这似乎有点麻烦。有更好的办法吗 为了进一步说明我想做什么,下面是使用awk时的外观: awk '/KEYWORD/ {i++} END { print i }' FILE 谢谢 这对我来说几乎不“麻烦”: 您也许可以使用正则表达式,但如果您真的想计算行数(与实例相反),那么肯定没有比上述方法更简洁的方法(从简洁和清晰的角度来看) 根据第一条注

我有一个简短的问题

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

我知道我可以简单地打开文件,循环所有的行,看看是否有匹配的,但这似乎有点麻烦。有更好的办法吗

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

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

这对我来说几乎不“麻烦”:

您也许可以使用正则表达式,但如果您真的想计算行数(与实例相反),那么肯定没有比上述方法更简洁的方法(从简洁和清晰的角度来看)

根据第一条注释编辑:

echo substr_count(file_get_contents($filename), $str);
这应该行得通。

这对我来说并不“麻烦”:

您也许可以使用正则表达式,但如果您真的想计算行数(与实例相反),那么肯定没有比上述方法更简洁的方法(从简洁和清晰的角度来看)

根据第一条注释编辑:

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

这应该行得通。

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

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

我需要行,但文件的格式会使它在计算实例时没有差异。然后您可以使用
substr\u count()
甚至
count(preg\u match\u all())
打开
文件获取内容()
。所有这些方法都会将整个文件加载到内存中,这在大文件上是不可取的。更改了接受的答案,因为编辑比dvcolgan的答案更简单。谢谢。我想要这些行,但是文件的格式使得我计算实例时没有区别。然后你可以使用
substr\u count()
甚至
count(preg\u match\u all())
on
file\u get\u contents()
。所有这些方法都会将整个文件加载到内存中,这在大文件上是不可取的。更改了接受的答案,因为编辑比dvcolgan的答案更简单。谢谢