2

好的,我有一本 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 等等。

提前致谢!

4

3 回答 3

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 行的数组(或者您可以直接输出数据而不是将其存储在数组中)

于 2013-09-20T12:05:19.140 回答
1

打印第 5 章

$chapter = 5;
$pages = 20;
$start = $chapter*$pages;
for($i=$start, $c=$start+$pages-1; $i < $c; $i++)
{
    echo $lines[$i];
}
于 2013-09-20T12:01:19.130 回答
1

刚刚在较早的 SO 问题上自己找到了答案:

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

基于 Michael Berkowski 所写的答案(PHP 在 100 行中每 10 行读取一次

于 2013-09-20T12:27:25.743 回答