我有纯文本的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">
<table border="1">
<tr>
<td>100</td>
</tr>
</table></pre>
html表单,显示来自base的数据:
<textarea class="ckeditor" name = "description" ><?php echo $description ?></textarea>
当我打开这个表单时,我看到空代码块,所有html代码都在pre-block之外,我看到一个真正的表而不是html标签。
如果我点击“Source”按钮,我看到相同的 - 表格标签不在“pre”标签内:
<pre class="prettyprint">
</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中,因为这非常令人困惑。
答案 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',''))}")
它有效。希望有所帮助。