PHP - 从文本文件中读取每一行后停止循环

时间:2014-03-16 02:19:02

标签: php

我希望下面的代码从dataFile.txt中读取单独的文本行,并在输入字段中显示它。 问题是从文本文档中读取第一行后,它会将所有剩余的文本行从文本文件显示到输入字段。但是在点击提交时它应该只显示第二行然后再提交它应该只显示第三行,在输入字段内。请帮忙。

<?php 
$file = __DIR__."/dataFile.txt";
$f = fopen($file, "r");
$array1 = array();


<form action="datagGet.php" method="get">
<input type="text" value="

<?php while ( $line = fgets($f, 100) )
{

    $nl = mb_strtolower($line);
    echo $nl;
    if(isset($_GET['done']))
    {
        $nl++;
    }
    else
    {
        break;  
    }
}
  ?>" 

name="someText">

<input type="submit" name="done" >
</form>

1 个答案:

答案 0 :(得分:0)

您的代码有几个问题。上面的第一条评论指向了许多。关键是$ _GET [&#39; done&#39;]是为表单提交设置的,因此您将回显输出的所有行。它永远不会破裂。

此外,您正在打开文件以阅读表单的每个提交。虽然我没有看到一个简单的方法,除非你在请求之间存储文件内容。

一种可能的选择是使用&#39; file()&#39;将整个内容读入数组。然后使用会话来存储已读取的行。然后在每次提交时,从会话读取中查找数组的索引;将它推进一次再次读取文件并返回该行。哇浪费。但是对于简单的网站来说还可以。

  • 所以使用file来获取数组中的行。
  • 将第一行输出为值。
  • 存储要在$ _SESSION变量中读取的下一个索引,如$ _SESSION [&#39; next_line&#39;] = 1

然后进一步提交。把它全部读回去。查看&#39; next_line&#39;,然后输出该行。

所以,例如

$ array = file(&#39;您的文件名&#39;); $ output = $ array [0]; if(isset($ _ SESSION [&#39; next_line&#39;])) $ _SESSION [&#39; next_line&#39;] = intval($ _ SESSION [&#39; next_line&#39;])+ 1; 其他 $ _SESSION [&#39; next_line&#39;] = 1; //灌注泵

使用$ output

回显表单 然后冲洗并重复。例如读取,获取带文件的输出(next_line),设置$ _session = next_line + 1;以表格形式呈现输出。

PS。一些额外的笔记 *当然,您需要在每个请求上启动会话。 *您需要检查$ _SESSION [&#39; next_line&#39;]是否已设置。如果没有,将其设置为1(填充它)