【问题标题】:Reading Specific Lines In Text File With PHP使用 PHP 读取文本文件中的特定行
【发布时间】:2015-05-03 06:48:53
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我用谷歌搜索“使用 php 读取特定的文本行”,前 9 个返回是 SO 链接。他们中的任何一个都能解决您的问题吗?您还应该查看How to Ask 以了解该网站的运作方式。
  • SO 不是“给我代码”问答网站。 如果您希望有人为您编写代码,请寻求专业人士并付出代价!我们会尝试帮助解决无效的代码,但您需要通过发布现有代码来展示您尝试过的内容尝试解决问题(即向我们展示代码)。再次,我将您推荐给How to Ask
  • 我没有投反对票。 :( ...这是曲解了它的文字,但并不是出于对他们的厌恶。你写的方式很混乱,我给你一个赞成票!
  • 再一次,我知道我想要什么。我已经能够显示文本文件中的最后 50 行或前 50 行。我只是不知道如何显示特定的行。我想显示第 51 到 100 行。
  • @enoma9 - Guilherme 下面提供的解决方案通过传递 3 个参数来工作。 $file - 您希望读取的文件,$init - 您希望开始读取的起始行号(例如 51),以及 $end - 您希望完成读取的行(例如 100)。它将所有这些行的内容作为字符串返回。

标签: php file-io seek


【解决方案1】:

根据 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);
}

请注意,这使用回车分隔每一行 "\n",您可以根据显示结果的位置将其更改为 "&lt;br /&gt;" 或您喜欢的任何内容。

【讨论】:

  • 没问题。如果有人对稍作改动的版本感兴趣,仍将其保留在这里。 :)
  • 数组的好例子:) +1。当您发送消息时,请使用“@用户名”为什么但收件箱中的消息不足,谢谢!
【解决方案2】:

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

【讨论】:

  • 另一个例子,可以在这里找到stackoverflow.com/questions/19358539/…。这允许读取任何大小的文件,并寻找文件中的特定点。
  • 感谢您的回答。我无法弄清楚这一点,这让我发疯了。
  • = $init) { $output .= $data; } } fclose($handle);返回$输出; }?>
  • 我发布了我使用的代码。 IT 仍显示致命错误且无法正常工作。
猜你喜欢
  • 2013-08-03
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
相关资源
最近更新 更多