CKEditor - 如何在富文本中保存和显示html代码

时间:2014-02-05 15:04:50

标签: html tags ckeditor

我有纯文本的html textarea,MySQL中存有html代码示例。

我将textarea改为ckeditor类。一切都很好,但现在所有的html代码块都不会以富文本模式显示。

我尝试使用<pre><code>代码,但它们无效。

我也尝试过insertpre插件,但没有帮助。

有没有办法在CKEditor中显示/保存html代码?如何使用Code Sample按钮忽略块中的html标签?

我的例子。(抱歉,无权发布图片)。

Textarea字段:

<textarea class="ckeditor" name = "description" >Text</textarea>

我使用“Insertpre”插件粘贴代码:

 <table border="1">
   <tr>
     <td>100</td>
   </tr>
 </table>

我立刻看到了正确的图片。

表单提交后我得到变量: $description=$_POST['description'];并将其放入数据库。

在数据库中,我看到此变量的下一个值:

<pre class="prettyprint">
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
  &lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</pre>

html表单,显示来自base的数据:

<textarea class="ckeditor" name = "description" ><?php echo $description ?></textarea>

当我打开这个表单时,我看到空代码块,所有html代码都在pre-block之外,我看到一个真正的表而不是html标签。

如果我点击“Source”按钮,我看到相同的 - 表格标签不在“pre”标签内:

<pre class="prettyprint">

&nbsp;</pre>

<table border="1">
    <tbody>
        <tr>
            <td>100</td>
        </tr>
    </tbody>
</table>

据我所知,代码以正确的格式保存在数据库中,因此在输出或CKEditor行为的某处出现问题......

更新:找到解决方法: 经过长时间的搜索后,我在此主题中发现了类似的问题:http://ckeditor.com/forums/CKEditor-3.x/html-code-pre-tags-problem 描述的解决方法帮助了我:如果我用 htmlspecialchars php函数输出它,它运行良好:

<textarea class="ckeditor" name = "description" ><?php echo htmlspecialchars($description) ?></textarea>

我不确定它是一种解决方法还是正确的解决方案 - 在此之后,即使没有“预”阻止,也会显示以富模式插入的所有标签。如果是 - 它应该在CKEditor FAQ中,因为这非常令人困惑。

1 个答案:

答案 0 :(得分:2)

可能是我迟到了。但是,分享一个对我来说同样有问题的解决方案会很好,所以它可能对某人有帮助。

我遇到了与ckeditor类似的问题,我在表格中保存了用户输入,当我想在ckeditor实例中显示保存的html时,它会忽略html而不显示任何内容。

所以我检查了控制台上的html,发现它有\r\n。所以我只是将它们删除了,当我在转发html后将其送回ckeditor时,它就可以了。

这是我的红宝石代码:

html = "<p>Content comes here</p>\r\n"

在我看来

CKEDITOR.instaces.my_editor.setData("#{raw(html.gsub('\r\n',''))}")

它有效。希望有所帮助。