我试图使用TinyMCE(版本4.1.2)作为WYSIWYG编辑器。登录用户可以编写他们自己的页面,并直接查看当访问者访问时页面上显示的内容。TinyMCE消毒输入
现在,我想要直接存储html。例如:
登录的用户看到This is my text!
,但事实上TinyMCE将其显示为<p>This is my text!</p>
。还有一些样式,如<h1>
和可以添加的链接。
现在,用户可以插入超链接,给出应该显示的链接和文本。然而问题是,如果用户手动编写<a href='example.com'>Example</a>
,它会在编辑器中显示,但是也会以纯html形式存储,因此显示时只会显示文本Example
的超链接。
这是我的代码是如何排序的样子(左出配置):
tinymce.init({
setup: function(editor){
editor.on('change', function(e){
$('[name="'+editor.id+'"]').next("textarea").html(editor.getContent({format: 'html'}));
});
}
});
所以从TinyMCE的字段中的文本被复制到一个<textarea>
这是被保存时提交<form>
内。
事情是这样的:
被存储为:
<h1>Title</h1>
<p><a href="example.com">example</a></p>
<p><a href="example.com">test</a></p>
这让我没有办法区分真正的链接和纯文本,等以后我不能处理它存储数据。
我已经拨弄editor.getContent({format: 'html'})
格式选项,如format: 'raw'
,但无济于事。我究竟做错了什么?
谢谢,但它不是我真正想要的。编辑器中的样式代码实际上是'
Title
',这很好。但是,当用户手动编写'标题
'时,我想要像那样原始显示它。因此,只有用户编写的内容应该像'htmlspecialchars()'一样进行处理,以防止意外关闭额外的标签并仅允许编辑器支持的标签。 – jdepypere 2014-09-10 23:26:56好的,是的,这是我的想法...在这种情况下,您需要启用代码标记格式并让您的用户使用它。由于TinyMCE所做的唯一事情就是将文本封装在HTML中,因此它无法检测是否重新包装了预格式化的HTML。这与大多数其他类似的编辑器相同,实际上很少有强制HTML代码被显示,而不是被解析。 – Ethan 2014-09-10 23:56:35
我想另外一个选择是编写一个javascript扩展,它会在你正在写的时候查找html标签,如果发现一个标签,它会自动将它包装在[code] ... [/ code]段中。 – Ethan 2014-09-10 23:57:16