CKeditor富文本编辑器在浏览器中显示html标签

时间:2013-10-05 11:00:12

标签: html encoding ckeditor

我刚刚在我正在构建的网站上安装了CKeditor富文本WYSIWYG编辑器,它似乎工作正常,除了它将文本作为编码的html而不是常规html插入我的mysql数据库中然后当浏览器输出此文本,它将编码数据转换为常规html,然后在浏览器中显示html标签,没有样式!?

例如我输入:

"This is text"

进入编辑器然后插入

<p>This is text</p>

进入数据库。然后,当页面被调用时,浏览器会在页面上转换以上内容和以下内容:

<p>This is text</p>

显然我只想在页面上显示"This is text"

有谁知道为什么会这样?请问如何解决?

欢迎任何建议。

干杯

3 个答案:

答案 0 :(得分:2)

如果您不希望CKEditor为您创建段落,请将config.autoParagraph设置为false。此外,您可能希望更改输入密钥行为,config.enterMode设置为CKEDITOR.ENTER_BR

regarding disappearing styles ......


编辑:好的,似乎我错过了你的观点。

因此,在呈现您键入的内容时,您的网站是否显示HTML标记而不是HTML? 那么问题是你的服务器端而不是CKEditor。您可以在控制台中验证CKEDITOR.instances.yourInstance.getData()是否产生了正确的,未转义的HTML:

<p>This is text</p> // Right!

如果是这样,我坚信,CKEditor就好了,这是你的服务器应用程序,它将特殊字符转换为实体(例如像PHP htmlspecialchars),同时保存到数据库。你没有提到你在那里使用什么样的框架/语言,所以我可以告诉你,它是为了保护用户输入以防止跨站点脚本,打破布局等。所有流行的框架都允许你禁用该功能一个特定的领域。只需参考文档。

答案 1 :(得分:1)

现代模板语言倾向于自动调用html输入。例如,在DTL中,只需使用即可在模板中正确显示 {{object.field_name | safe}} 这是一个期望的操作,因为用户输入被认为是不可信的并且可能被视为恶意。

答案 2 :(得分:0)

浏览器无法解析HTML,因此在显示的页面(或php文件中)尝试使用{! !}而不是{{ }}