0

我正在使用 CKeditor 通过文本区域保存和编辑文本文件中的数据,一切正常。<br />当我尝试通过我的 update.php 编辑/更新文本文件时,除了新行 (" ") 之外的所有内容。我真的无法找出问题所在,我试图在标签后替换标签并没有设法解决问题。

对文本文件进行读写的代码:

$text1 = "../conteudos/start/text1.txt";
if (isset($_POST['body1'])) {
    $newData = nl2br($_POST['body1']);
    $handle = fopen($text1, "w");
    fwrite($handle, $newData);
    fclose($handle);
}
// ------------------------------------------------
if (file_exists($text1)) {

    $myData1 = file_get_contents($text1);
    $myData1 = strip_tags($myData1);
}

编辑文本内容的代码:

<textarea class="ckeditor" name="body1" id="body1">
    <?php echo str_replace("<br />","",$myData1); ?>
</textarea>

如前所述,文本很好地显示在我的 index.php 上,没有任何 html 标签,但是当我尝试通过上面的文本区域编辑它时,我仍然没有得到任何标签,但我将所有文本放在一行中。这确实应该有效,因为我正在使用“nl2br”功能,但显然有些东西正在取消它。

我能做些什么?

4

3 回答 3

1

我认为你想要做的是:

$text1 = "../conteudos/start/text1.txt";
if (isset($_POST['body1'])) {
    $newData = nl2br($_POST['body1']);
    $handle = fopen($text1, "w");
    fwrite($handle, $newData);
    fclose($handle);
}
// ------------------------------------------------
if (file_exists($text1)) {

    $myData1 = file_get_contents($text1);

    //Change it here first
    str_replace("<br />","\n",$myData1); //You also forgot the new line character I think.

    $myData1 = strip_tags($myData1);
}

然后你可以这样做:

<textarea class="ckeditor" name="body1" id="body1">
  <?php echo $myData1; ?>
</textarea>

根据我所看到的,您犯了一个小逻辑错误。根据我的理解,你想去掉标签但保留新行。因此,在去掉标签之前先更改“< br />”。希望这就是我猜你想要的。

于 2013-09-30T13:27:04.377 回答
0

发生了一件非常奇怪的事情,因为根据用户 Touch 的说法,他的方法在他的计算机上运行。不幸的是,它对我的​​不起作用!因此,经过一段时间的思考,我得出结论,我已经完成了一些更换标签的过程。为了证实与否我的这个理论,我决定通过逐行擦除并查看结果来执行“反向工程”Touch 的方法。最后我看到我的结论是正确的,我已经完成了标签替换的过程,因为这段代码:

$text2 = "../conteudos/start/text2.txt";
if (isset($_POST['body2'])) {
    $newData = nl2br($_POST['body2']);
    $handle = fopen($text2, "w");
    fwrite($handle, $newData);
    fclose($handle);
}
// ------------------------------------------------
if (file_exists($text2)) {

    $myData2 = file_get_contents($text2);
    $myData2 =  $myData2;
}

完美地工作。我只能认为这是因为我使用的是 KCEditor ......

非常感谢所有回答,让我思考并帮助我以这种方式实现我的目标!

于 2013-09-30T14:21:17.220 回答
0

您正在从文件中剥离标签 ( $myData1 = strip_tags($myData1))。<br />是一个标签,所以你也要把它去掉!

这使您str_replace毫无用处,因为标签已被剥离。无论如何,你不应该nl2br首先需要它,因为换行符在文本文件中是完全有效的......

于 2013-09-30T13:16:31.017 回答