使用PHP开发文本编辑器

时间:2013-10-20 13:52:16

标签: php html editor

我已经开始尝试制作一个在线文本编辑器的小项目,它一直很顺利,直到系统开始覆盖文件并不必要地添加空格。我有一个名为editor.php的文件,其中所有文件加载,保存和编辑都已完成。

所以这是文件的开启/关闭:

<?php
    if(isset($_POST['new'])){
        $filer = substr(md5(microtime()),rand(0,26),6);
        $file_create = $filer.".txt";
        $handle = fopen("files/".$file_create,"w");
        fclose($handle);
        header("Location: editor.php?e=".$filer);
    }

    $file = $_GET['e'];
    $file = basename($file);
    $filename = "files/".$file.".txt";

    $file_get = file_get_contents($filename);

    if(isset($_POST['save'])){
        file_put_contents($filename, $_POST['text']);
    }
?>

在页面的下方,我在<textarea>标记中有这个:

<?php
    echo $file_content;
?>

这使用file_get_contents();

中的字符串

但是当我保存时,没有任何反应,事实上它会删除文件,当我加载文件时,有八个空格但没有别的。

我知道还有另一种方法可以使用fopen()执行此操作,如果有人可以给我一个方法来使用它,我们将非常感激。

2 个答案:

答案 0 :(得分:0)

您必须验证$ _POST ['text']是否确实包含内容。

if(isset($_GET['e'])){

    $file = $_GET['e'];
    $file = basename($file);
    $filename = $_SERVER['DOCUMENT_ROOT']."/files/".$file.".txt";
    $file_get = file_get_contents($filename);

    if(isset($_POST['save'])){
       if(!empty($_POST['text']) && isset($_POST['text']))
       {
          $length = strlen($_POST['text']); 
          if($length > 0)
           file_put_contents($filename, trim($_POST['text']));
          else
           die("No content");
       }

    }
}

还要检查文件是否存在且是否可写。您可以使用chmod,mkdir和file_exists函数。

答案 1 :(得分:0)

查看PHP的文件模式:http://php.net/manual/en/function.fopen.php

如果您在fopen()模式下使用w打开所有文件,那么您的文件在打开时会被截断。这就是w模式的运作方式。尝试将a+c+模式与fopen()一起使用。

修改

此外,file_put_contents()也会覆盖文件内容,除非您设置FILE_APPEND标记,例如file_put_contents($file, $data, FILE_APPEND)