nl2br和str_replace在PHP脚本中不起作用

时间:2013-09-30 13:11:45

标签: php nl2br

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

在文本文件上读写代码:

$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”功能,但显然有些东西正在取消它。

我该怎么办?

3 个答案:

答案 0 :(得分: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>

根据我所看到的,你犯了一个小的逻辑错误。根据我的理解,您想要删除标签但保留新行。所以改变“&lt; br /&gt;”首先在删除标签之前。希望这就是你想要的。

答案 1 :(得分:0)

您正在剥离文件中的代码($myData1 = strip_tags($myData1))。 <br />是一个标记,所以你也要删除它!

这会使您的str_replace无用,因为标签已被剥离。在任何情况下,您都不应该首先需要nl2br,因为换行符在文本文件中完全有效...

答案 2 :(得分: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 ...

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