从PHP中的文本文件生成列表

时间:2015-12-08 02:23:05

标签: php list text

我正在尝试从文本文件创建有序列表。正如我的代码当前所示,它修改了原始文本文件,输入全部在同一行(列表编号)。例如,如果我输入“水银”,它将显示为1.水银,但如果我输入“venus”,它将显示为1.mercuryvenus

我试图让它工作,以便如果我输入一些文本,如“水银”,然后点击提交按钮,它将显示为 水银如果我输入更多文本,例如“venus”,它将显示为2. venus,全部采用有序列表格式。我认为爆炸可能会用于此,但我不确定如何正确实现这一点。另一个选择是为每个输入创建一个新的文本文件,如果它更有效。

  echo "<form method='post'>

   <label>Enter some text</label><br>
   <textarea name='textbox' cols='60' rows='5' required></textarea>
        <br>
        <input type='submit' name='submit' value='Submit'/>
        <input type='hidden' name='step' value=''/>

    </form>";

  echo "<section>"; 

    echo "<h3>Current tasks</h3>";

        $text = ("text.txt");
        $extract = (isset($_POST['textbox']) ? $_POST['textbox'] : null);
        $file = fopen($text,"a");
        fwrite($file,$extract);
        fread($file,filesize("text.txt"));
        fclose($file); #Not sure where this should really go

        $c = array(file_get_contents('text.txt'));
        $x = explode(" ",$c); #Could be wrong format

      echo "<ol>";

        foreach($c as $r) {
          echo "<li>" . $r. "</li>", "<br>";

         }
      echo "</ol>";

  echo "</section>";

2 个答案:

答案 0 :(得分:1)

这是解决方案

echo "<section>";

echo "<h3>Current tasks</h3>";


$text = "text.txt";
$extract = (isset($_POST['textbox']) ? $_POST['textbox'] : null);
$file = fopen($text,"a+");
fwrite($file," ".$extract);
#fread($file,filesize("$text"));


$x = explode(" ",file_get_contents($text));


if(isset($_POST['submit'])) {
    echo "<ol>";


    foreach ($x as $r) {
        echo "<li>" . $r . "</li>", "<br>";
    }
    echo "</ol>";

echo "</section>"

答案 1 :(得分:0)

首先,"a"中的fopen($text,"a")表示附加。这意味着如果你的文件中已经有“水银”文字并且你用“venus”再次运行你的程序,那么你将在“水银”的末尾添加“venus”来获得“mercuryvenus”。如果您想要两者之间的空格,则必须在将其写入文件时添加它:fwrite($file, " ".$extract);

其次,您执行$x = explode(...,然后在$x语句中不使用foreach。在$x中使用$c代替foreach