我想使用PHP从文本文件的第51至100行读取。

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

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

希望您能理解这个问题。 我已经使用了很多次并且喜欢它。 只是在任何地方都找不到答案。

任何帮助将不胜感激。 提前致谢。

===============>>#1 票数:1 已采纳

使用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>');

===============>>#2 票数:1

只是根据Guilherme的示例在此处发布另一个示例:

在我的盒子上测试了Guilherme的代码之后,我发现在使用feof()的代码可以正常工作时(逻辑上合理),它出现了与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);
}

请注意,这使用回车符分隔每行"\\n" ,您可以将其更改为"<br />"或根据显示结果的位置而任意更改。

  ask by enoma9 translate from so

未解决问题?本站智能推荐: