显示文件的多行内容,不重复

3
我需要将每10行文本放入一个div中进行输出。
例如:
<div class='return-ed' id='1'>
line 1
line 2
...
line 9
line 10
</div>

<!-- next group of lines -->

<div class='return-ed' id='2'>
line 11
line 12
...
line 19
line 20
</div>

有人知道如何做到这一点吗?

数组来自file(),因此它的行来自文件。

4个回答

3

这应该可以正常工作:

$blocks = array_chunk(file('path/to/file'), 10);
foreach($blocks as $number => $block) {
    printf('<div id="%d">%s</div>', 
            $number+1, 
            implode('<br/>', $block));
}

参考资料:


array_chunk默认情况下具有bool $preserve_keys = false,因此文件号将按块重新编号。 - hakre

1
echo '<div class="return-ed" id="1">';
$lineNum = 0;
foreach ($lines as $line) {
    if ($lineNum && !($lineNum % 10)) {
        echo '</div><div class="return-ed" id="'.($lineNum/10+1).'">';
    }
    echo $line."<br />";
    $lineNum++;
}
echo "</div>";

1
使用比我的更优雅,但是对于除了最后一个循环之外的所有内容都缺少关闭的<div> - Tim Lytle
是的。早上第一件事就不应该在文本区域中输入代码。我已经添加了关闭 div。 - webbiedave

0
通过快速的谷歌搜索:

http://www.w3schools.com/php/php_file.asp

逐行读取文件

fgets()函数用于从文件中读取单行。

注意:调用此函数后,文件指针已移动到下一行。

来自W3 Schools的示例:

以下示例逐行读取文件,直到达到文件结尾:

<?php
$file = fopen("welcome.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
  {
  echo fgets($file). "<br />";
  }
fclose($file);
?>

你所需要做的就是在 while 循环中拥有一个计数变量,该变量计数到 10。一旦它达到 10,就执行你需要做的操作。


0

假设你的行是在一个数组中,你正在回显它们,那么像这样的代码就可以工作:

$count = 0;
$div = 1;
foreach($lines as $line){ //or a for loop, whatever you're using
  if(0 == $count){
    echo "<div id='$div'>";
  }

  $count++;
  echo $line;

  if(10 == $count){
    echo "</div>";
    $count = 0;
  }
}

我认为你的意思是 foreach ($lines as $line) - webbiedave
@webbiedave - 确实。看起来早上很危险。已更新。 - Tim Lytle
额...我本来会选择其他答案的,不是我不感激“采纳”。只是这个答案让逻辑更加明显吧? - Tim Lytle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接