【问题标题】:PHP - How do I cut out a block of lines in a text document?PHP - 如何在文本文档中剪切一行?
【发布时间】:2010-12-13 16:33:18
【问题描述】:

如何在 PHP 中从文本文件中截取一段文本。例如,我想取出第 0-50 行并将其变成一个字符串。甚至可能在其中放置一些 html 格式。我已经知道我需要剪掉哪些行我只是不知道如何选择它们并将它们放入一个字符串中。

【问题讨论】:

  • 你的线条是如何划分的?硬回报?如果是这样,您可以将您的字符串explode() 放入一个数组中,然后从数组中取出前50 (0-49) 行。
  • 这是一个非常相似的问题,如何获取文本文件的前 20 行:stackoverflow.com/questions/4410077/…
  • @Surreal 这是一个不同的问题,当涉及到从文本中切割任意块时
  • @Gordon:看起来有点像,我明白了。我阅读了 0-50 并记住了“前 20 个”。我想说它仍然可以应用并且有用,尽管这不是完全相同的问题。

标签: php search text


【解决方案1】:

使用文件($filename)。 结果是一个数组,其中每个元素都是文件中的一行。 示例:

$lines = file("foo.txt");
//extract desired lines
$lines = array_slice($lines,19,21);
$string ) implode("\n",$lines);

【讨论】:

    【解决方案2】:

    在新行上展开并输出 0-50 的数组值。

    【讨论】:

    • 当你有大文件时,explode 不是很有效。除了可能的速度问题之外,您还需要 2 倍以上的内存才能做到这一点。最好使用 fgets 逐行阅读或使用 Oliver A. 建议的 file() 函数。
    【解决方案3】:

    使用fopen打开文件,使用fgets读取前50行。

    $fp = fopen('myfile.txt', 'rt');
    if ($fp)
    {
        for ($i = 0; $i < 50; $i++)
        {
            $s = fgets($fp);
            ...add error checking and do something with the line here
        }
    }
    

    即使您需要读取大文件的前 50 行,这也很有效。

    【讨论】:

      【解决方案4】:

      内存占用较少的方法:

      $fileObject      = new SplFileObject('yourFile.txt');
      $fileIterator    = new LimitIterator($fileObject, 0, 49);
      $firstFiftyLines = implode(iterator_to_array($fileIterator));
      

      或作为替代

      $fileObject      = new SplFileObject('yourFile.txt');
      $fileIterator    = new LimitIterator($fileObject, 0, 49);
      $firstFiftyLines = '';
      foreach ($fileIterator as $currentLine) {
          $firstFiftyLines .= $currentLine;
      }
      

      如果您需要其他行,请将第二个和第三个参数更改为LimitIterator。第一个是起始偏移量,第二个迭代计数(在此上下文中要读取的行)。

      将答案标记为 CW,因为问题(和答案)与 Read a file from line X to line Y? 重复

      【讨论】:

        猜你喜欢
        • 2011-03-18
        • 1970-01-01
        • 1970-01-01
        • 2020-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-10
        • 1970-01-01
        相关资源
        最近更新 更多