读取文件的第一行和最后一行最有效的PHP方法是什么?

读取文件的第一行和最后一行最有效的PHP方法是什么?,php,Php,我正在尝试打开一个文件并确定它是否有效。如果第一行是开始,最后一行是结束,则此选项有效 我见过获取文件最后一行的不同方法,但它也没有特别注意第一行 我该怎么做?我正在考虑将文件内容加载到一个数组中,并检查$array[0]和$array[x]的开始和结束。但这似乎是对所有可能在中间的垃圾的浪费。 如果是有效文件,我将在开始和结束之间读取/处理文件内容。这是我提供的: $lines = file($pathToFile); if ($lines[0] == 'START' && e

我正在尝试打开一个文件并确定它是否有效。如果第一行是开始,最后一行是结束,则此选项有效

我见过获取文件最后一行的不同方法,但它也没有特别注意第一行

我该怎么做?我正在考虑将文件内容加载到一个数组中,并检查$array[0]和$array[x]的开始和结束。但这似乎是对所有可能在中间的垃圾的浪费。 如果是有效文件,我将在开始和结束之间读取/处理文件内容。

这是我提供的:

$lines = file($pathToFile);
if ($lines[0] == 'START' && end($lines) == 'END') {
    // do stuff
}

如果不需要,不要将整个文件读入数组。如果文件可能很大,您可以这样做:

$h = fopen('text.txt', 'r');
$firstLine = fgets($h);
fseek($h, -3, SEEK_END);
$lastThreeChars = fgets($h);

内存占用要低得多

使用FGET读取整个文件对于小型SILE来说是有效的。如果您的文件很大,则:

  • 打开它,读第一行
  • 使用我在fseek文档中的php.net中找到的tail(我没有检查它,但看起来还可以)函数

  • 使用
    fgets
    读取第一行。关于最后一行,请参见可能有用:。另请参见.file将整个文件读入数组。如果超过~50k行,大多数默认的php设置将不支持该长度的数组。@NickMaroulis这样做是否会干扰OP问题?它会起作用,但OP要求提供有效的方法。他要求提供第一行和最后一行的方法。他没有指定文件的大小,所以我只指出了最简单的方法。如果你最好自己回答。OP自己建议了这个方法,所以作为一个回答对我来说没有多大帮助,但是效率很低。SEEK with SEEK_END比遍历所有行要好得多