我确定这是一个重复的问题,但无论如何:
$file = new SplFileObject('file.txt');
$file->seek($lineNumber); // zero based
echo $file->current();
因为 middaparka 发现了重复,所以进行 CW 标记
。未经测试。
function getline($file, $linenum, $linelen = 8192) {
$handle = fopen($file, "r");
if ($handle) {
while (!feof($handle)) {
$linenum -= 1;
$buffer = fgets($handle, $linelen); // Read a line.
if (!$linenum) return $buffer;
}
fclose($handle); // Close the file.
}
return -1;
}
类似这样的代码可以实现 - 从文件中读取每一行,直到找到目标行(最后一行确保如果没有找到目标行则返回 false)。
function getLine($file, $lineno)
{
$line=false;
$fp=fopen($file, 'r');
while (!feof($fp) && $lineno--)
{
$line=fgets($fp);
}
fclose($file);
return ($lineno==0)?$line:false;
}