从长文本中获取线条

时间:2013-09-20 11:58:56

标签: php

好的,我有一本30.000行的数字图书。我想只展示一章的前20行作为预览,每章都有300行。

任何人都知道如何解决这个问题?我尝试了以下方法:

foreach ($lines as $n => $line) {
  if ($n >= 0 && $n =< 20) {
     echo $line;
  }

这将导致显示第一章的前20行。那么我该如何为所有其他行重复这个呢?

显示0-20 显示300-320 显示600-620 显示900-920 等。

提前致谢!

3 个答案:

答案 0 :(得分:2)

你可以用:

$rgChapters = [];
$rFile      = fopen('/path/to/file', 'r');
$iLines     = 20;
$iChapter   = 300;
$i          = 0;
while($sData = fgets($rFile) && !feof($rFile))
{
   if($i % $iChapter < $iLines)
   {
      $rgChapters[floor($i/$iChapter)].=$sData.PHP_EOL;
   }
   $i++;
}
fclose($rFile);

- 结果,你将获得一个每300行前20行的数组(或者你可以直接输出数据而不是将它存储在数组中)

答案 1 :(得分:1)

打印第5章

$chapter = 5;
$pages = 20;
$start = $chapter*$pages;
for($i=$start, $c=$start+$pages-1; $i < $c; $i++)
{
    echo $lines[$i];
}

答案 2 :(得分:1)

我刚刚在早期的SO问题上找到答案:

foreach ($lines as $n => $line) {
     if ($n % 300 > 0 && $n % 100 <= 20) {
         echo $line; // or whatever
     }
 }

根据Michael Berkowski撰写的答案(PHP read in every 10 out of 100 lines