使用 PHP 读取文本文件中的特定行

Reading Specific Lines In Text File With PHP

我想使用 PHP.

读取文本文件中的第 51 行到第 100 行

文本文件在任何给定时间都少于 500 行。

我想阅读第 51 行到第 100 行。没有其他行。

希望你能理解我的问题。我用过很多次并且喜欢它。就是找不到这个问题的答案。

如有任何帮助,我们将不胜感激。提前致谢。

使用whilefopenfeof(适合读取大文件8),像这样:

<?php
function retrieveText($file, $init, $end, $sulfix = '')
{
    $i = 1;
    $output = '';

    $handle = fopen($file, 'r');
    while (false === feof($handle) && $i <= $end) {
        $data = fgets($handle);

        if ($i >= $init) {
            $output .= $data . $sulfix;
        }
        $i++;
    }
    fclose($handle);

    return $output;
}

有关如何使用此函数获取第 51 到 100 行的示例:

echo retrieveText('myfile.txt', 51, 100);

添加分隔线:

echo retrieveText('myfile.txt', 51, 100, PHP_EOL);

在html中添加分界线:

echo retrieveText('myfile.txt', 51, 100, '<br>');

这里只是根据 Guilherme 的例子发布另一个例子:

在我的盒子上测试 Guilherme 的代码后,我发现它存在与使用 feof() 有关的错误,而他的代码应该可以工作(逻辑是合理的),但它确实中断了。

以下方法(使用方式与他的方法相同)应该是一个可行的替代方法。

function retrieveText($file, $min, $max)
{
    $output = Array();

    $line = -1;
    $handle = fopen($file, 'r');
    while(!feof($handle)) {
        $line++;
        if(($line >= $min && $line <= $max)) {
            $output[] = fgets($handle);
        } elseif($line > $max) {
            break;
        } else {
            fgets($handle);
        }
    }
    fclose($handle);
    return implode("\n", $output);
}

请注意,这使用回车 return 来分隔每一行 "\n",您可以将其更改为 "<br />" 或任何您喜欢的内容,具体取决于您将在何处显示结果。