我試圖使用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