在PHP中将文件I/O传递给textarea

Lat*_*tze 3 php file-io

我和我的朋友一起有一点闲暇主页.他不是程序员,为了让他能够更改首页上的一些文字,我创建了一个php脚本,

1)从文件"tester.txt"读取数据(这是应该在首页上的文本)
2)将此文本打印到textarea,您可以在其中编辑文本并再次提交
3)将编辑后的文本写入同一个文件"tester.txt"

两个函数Read(); 和写(); 看起来像这样

function Read() {
    $file = "tester.txt";
    $fp = fopen($file, "r");
    while(!feof($fp)) {
        $data = fgets($fp, filesize($file));
        echo "$data <br>";
    }
    fclose($fp);
}

function Write() {
    $file = "tester.txt";
    $fp = fopen($file, "w");
    $data = $_POST["tekst"];
    fwrite($fp, $data);
    fclose($fp);
}
Run Code Online (Sandbox Code Playgroud)

我唯一的问题是,当文本被打印到文本区域时,行返回被写为<br>- 我真的不希望它这样做,因为当你编辑一些代码并重写它时,另一层<br>出现了.这是一个截图来说明:

测试1

测试2

这有什么解决方法吗?

谢谢!

如果您需要剩下的代码,这里是:

<html>
    <head>
        <title>Updater</title>
    </head>
    <body>
        <?php
               function Read() {
                   $file = "tester.txt";
                   $fp = fopen($file, "r");
                   while(!feof($fp)) {
                       $data = fgets($fp, filesize($file));
                       echo "$data <br>";
                   }
                   fclose($fp);
               }

               function Write() {
                   $file = "tester.txt";
                   $fp = fopen($file, "w");
                   $data = $_POST["tekst"];
                   fwrite($fp, $data);
                   fclose($fp);
               }
        ?>

        <?php
        if ($_POST["submit_check"]){
            Write();
        };
        ?>      

        <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
        <textarea width="400px" height="400px" name="tekst"><?php Read(); ?></textarea><br>
        <input type="submit" name="submit" value="Update text">
        <input type="hidden" name="submit_check" value="1">
        </form>

                <?php
        if ($_POST["submit_check"]){
            echo 'Text updated';
        };
        ?>      


    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

nic*_*ckb 10

这比你想象的要简单.您不应该输出<br>标签,因为textarea已包含输入的换行符(\r\n\n).您不必像这样读取文件,如果您以这种方式阅读,您永远不必担心字符内容.

更改:

$fp = fopen($file, "r");
while(!feof($fp)) {
    $data = fgets($fp, filesize($file));
    echo "$data <br>";
}
fclose($fp);
Run Code Online (Sandbox Code Playgroud)

至:

echo file_get_contents( $file);
Run Code Online (Sandbox Code Playgroud)

问题解决了.