用于编辑文本文件的不同行的PHP代码

时间:2014-11-06 01:38:54

标签: php html arrays csv

我有一个以下格式的文本文件,我们称之为stats.txt:

valueA1, valueA2, valueA3, valueA4
valueB1, valueB2, valueB3, valueB4
valueC1, valueC2, valueC3, valueC4
valueD1, valueD2, valueD3, valueD4

我希望在html文档中使用此代码填充四个文本框或textareas,并在提交表单时附加到文本文件的相应行。我对PHP知之甚少,所以无法找到实现这一目标的方法。

我当前的html文件如下所示:

$url = 'editor.php';
$file = 'stats.txt';

// check if form has been submitted
if (isset($_POST['text1']))
{
    // save the text contents
    file_put_contents($file, $_POST['text1']);

    // redirect to form again
    header(sprintf('Location: %s', $url));
    printf('<a href="%s">Updated</a>.', htmlspecialchars($url));
    exit();
}

// read the textfile
$text = file_get_contents($file);

?>

我无法弄清楚如何在文本文件的行之间循环,所以有一大堆可怕的代码来获取每行的值:

    <?php
    //for Line 1
    $myLine1 = 1 ; 
    $linefile1 = new SplFileObject($file);
    $linefile1->seek($myLine1-1);

    //for Line 2
    $myLine2 = 2 ; 
    $linefile2 = new SplFileObject($file);
    $linefile2->seek($myLine2-1);

    //for Line 3
    $myLine3 = 3 ; 
    $linefile3 = new SplFileObject($file);
    $linefile3->seek($myLine3-1);

    //for Line 4
    $myLine4 = 4 ; 
    $linefile4 = new SplFileObject($file);
    $linefile4->seek($myLine4-1);
    ?>

表格如下:

<form action="" method="post">
#stuff 1
<textarea id="stuff" name="stuff[]"><?php echo htmlspecialchars($linefile1) ?></textarea>
#stuff 2
<textarea id="stuff" name="stuff[]"><?php echo htmlspecialchars($linefile2) ?></textarea>
#stuff 3
<textarea id="stuff" name="stuff[]"><?php echo htmlspecialchars($linefile3) ?></textarea>
#stuff 4
<textarea id="stuff" name="stuff[]"><?php echo htmlspecialchars($linefile4) ?></textarea>
<input type="submit" />
<input type="reset" />
</form>

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

这是我编写的用于存储和检索文本文件数据的代码,您可以将其用作示例:

// Save Check Boxes in Serial Form for later retrieval
$myFile = "equipment.txt";
if($save == "yes"){
$stringData = serialize(array($container_20,$container_40,$container_45,$container_RF,$container_HQ,$container_Chassis));
file_put_contents($myFile, $stringData);
}

// Read Saved File and Populate Check Boxes
$recoveredData = file_get_contents($myFile);
list($container_20,$container_40,$container_45,$container_RF,$container_HQ,$container_Chassis) = unserialize($recoveredData);

答案 1 :(得分:0)

只需循环显示行并显示textareas。使用file()将文件放入数组

 <?php $file = file('stats.txt');?>

  <form action="" method="post">
     <?php
     foreach($file as $line) {
        echo "<textarea id='stuff' name='stuff[]'>".htmlspecialchars($line)."</textarea>";
     };?>
    <input type="submit" />
    <input type="reset" />
</form>

然后当你提交表格

    if(isset($_POST['stuff'])){
        $text = join("\n", $_POST['stuff']);
        file_put_contents($file, $text);
    };