天天看點

調用discuz編輯器釋出文章顯示html代碼的解決辦法

  網上找了很久也沒找到相應的問題,最後通過資料庫的字段對比才知道問題的所在。

  1、問題所在

  調用編輯器編輯的源碼

  而預設發帖的源碼為

  于是網上找了一通,最後才知道這是discuz的特色。對html代碼進行了特殊的處理,其采用了bbcode的方式進行二次編碼,顯示文章的時候再将bbcode編碼轉換成正常的html代碼。discuz這麼做的目的也顯而易見,最終是為了提高整個應用的安全性。

  2、送出前對html進行bbcode編碼

  static/js/bbcode.js中的html2bbcode可以講正常的html編碼轉換成discuz自定義的bbcode編碼

  最後在./static\image\editor\editor_function.js中的edit_save()找到了擷取編輯器内容,并設定編碼

  3、完整的調用方式

  其中jQuery("#message").val(html2bbcode(mcpobj.document.body.innerHTML));是将html轉成bbcode。

  4、這裡隻是web前端進行了bbcode的編碼。然而如果有需要也可以在php處理函數中進行bbcode的轉換

   5、編輯文章時出現“您的送出帶有不合法參數,謝謝合作”的解決辦法

  如果自定義調用discuz編輯器,存儲到資料庫的時候是bbcode格式。然而,如果編輯的時候也是自定義調用discuz編輯器的話,bbcode格式也就無法正常顯示了。如果在php裡面直接轉換成正常的html格式,這時又會觸發discuz的安全機制,無法正常送出。如果配到這樣的問題要怎麼解決呢?我們可以采用onload事件進行處理,也就是頁面加載完成以後用bbcode2html将bbcode編碼的内容轉換成正常的html再指派給編輯器。