我正在使用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”功能,但显然有些东西正在取消它。
我该怎么办?
答案 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)
$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 ...
非常感谢所有回答,感谢我以这种方式思考并帮助我实现目标!